Die Docs zeigen, wie man mehrere Funktionen gleichzeitig auf ein Groupby-Objekt anwendet, indem man ein Dict mit den Ausgabespaltennamen als Schlüssel verwendet:
In [563]: grouped['D'].agg({'result1' : np.sum,
.....: 'result2' : np.mean})
.....:
Out[563]:
result2 result1
A
bar -0.579846 -1.739537
foo -0.280588 -1.402938
Dies funktioniert jedoch nur bei einem Series-Groupby-Objekt. Und wenn ein Dict in ähnlicher Weise an ein Groupby-DataFrame übergeben wird, erwartet es, dass die Schlüssel die Spaltennamen sind, auf die die Funktion angewendet wird.
Was ich tun möchte, ist, mehrere Funktionen auf mehrere Spalten anzuwenden (aber bestimmte Spalten werden mehrmals bearbeitet). Außerdem werden einige Funktionen von anderen Spalten im Groupby-Objekt abhängen (wie SUMMEWENN-Funktionen). Meine aktuelle Lösung besteht darin, Spalte für Spalte vorzugehen und etwas Ähnliches wie den obigen Code zu tun, wobei Lambdas für Funktionen verwendet werden, die von anderen Zeilen abhängen. Aber das dauert lange (ich glaube, es dauert lange, ein Groupby-Objekt zu durchlaufen). Ich werde es so ändern müssen, dass ich das ganze Groupby-Objekt in einem Durchlauf durchlaufe, aber ich frage mich, ob es in pandas einen eingebauten Weg gibt, dies irgendwie sauber zu tun.
Zum Beispiel habe ich etwas Ähnliches versucht wie
grouped.agg({'C_sum' : lambda x: x['C'].sum(),
'C_std': lambda x: x['C'].std(),
'D_sum' : lambda x: x['D'].sum()},
'D_sumifC3': lambda x: x['D'][x['C'] == 3].sum(), ...)
aber wie erwartet erhalte ich eine KeyError (da die Schlüssel eine Spalte sein müssen, wenn agg
von einem DataFrame aufgerufen wird).
Gibt es einen eingebauten Weg, um das zu tun, was ich tun möchte, oder die Möglichkeit, dass diese Funktionalität hinzugefügt wird, oder muss ich das Groupby manuell durchlaufen?
6 Stimmen
Wenn Sie diese Frage ab 2017 besuchen, sehen Sie bitte die Antwort untenum den idiomatischen Weg zu sehen, um mehrere Spalten zusammenzufassen. Die derzeit ausgewählte Antwort hat mehrere Veraltungen darin, nämlich dass Sie nicht mehr ein Wörterbuch von Wörterbüchern verwenden können, um Spalten im Ergebnis eines groupby umzubenennen.