Ich arbeite mit großen Datasets, so dass pandas group und groupby Funktionen eine lange Zeit brauchen/zu viel Speicher verbrauchen. Ich habe gehört, dass einige Leute sagen, Groupby kann langsam sein, aber ich habe Probleme, eine bessere Lösung zu finden.Erstellen einer neuen Spalte in Pandas Datenrahmen mit einer Liste von Werten aus einer anderen Spalte ohne "groupby"
Wenn mein Datenrahmen hat zwei Spalten ähnlich wie:
df = pd.DataFrame({'a':[1,2,2,4], 'b':[1,1,1,1]})
a b
1 1
2 1
2 1
4 1
Ich mag eine Liste von Werten zurück, die in einer anderen Spalte auf einen Wert entsprechen:
a b list_of_b
1 1 [1]
2 1 [1,1]
2 1 [1,1]
4 1 [1]
ich derzeit verwenden:
df_group = df.groupby('a')
df['list_of_b'] = df.apply(lambda row: df_group.get_group(row['a'])['b'].tolist(), axis=1)
Der obige Code funktioniert für kleine Dinge, aber nicht für große Datenrahmen (df> 1.000.000 Zeilen) Hat jemand ha Einen schnelleren Weg, dies zu tun?
eine Liste der Werte zu schaffen, ist aufgrund Pandas problematisch wollen dies auf eine Serie konvertieren und auf Index ausrichten, könnten Sie versuchen 'df [‚list_of_b‘] = df ['a']. map (df.groupby ('a') ['b']. apply (Liste)) 'für die Geschwindigkeit – EdChum