Wenden Sie mehrere Funktionen auf mehrere Gruppenspalten an

Dasdocs Zeigen Sie, wie Sie mehrere Funktionen gleichzeitig auf ein Groupby-Objekt anwenden, indem Sie ein Diktat mit den Namen der Ausgabespalten als Schlüssel verwenden:

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 für ein Series groupby-Objekt. Und wenn ein Diktat auf ähnliche Weise von DataFrame an eine Gruppe übergeben wird, werden als Schlüssel die Spaltennamen erwartet, auf die die Funktion angewendet wird.

Ich möchte mehrere Funktionen auf mehrere Spalten anwenden (bestimmte Spalten werden jedoch mehrmals bearbeitet). Ebenfalls,Einige Funktionen hängen von anderen Spalten im groupby-Objekt ab (wie Sumif-Funktionen). Meine derzeitige Lösung besteht darin, Spalte für Spalte zu gehen und so etwas wie den obigen Code zu tun und Lambdas für Funktionen zu verwenden, die von anderen Zeilen abhängen. Dies dauert jedoch sehr lange (ich glaube, es dauert sehr lange, ein groupby-Objekt zu durchlaufen). Ich muss es so ändern, dass ich in einem Durchlauf das gesamte Groupby-Objekt durchlaufe, aber ich frage mich, ob es einen eingebauten Weg für Pandas gibt, dies etwas sauber zu machen.

Zum Beispiel habe ich so etwas ausprobiert

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 bekomme ich einen KeyError (da die Schlüssel eine Spalte sein müssen wennagg wird von einem DataFrame aufgerufen).

Gibt es eine eingebaute Methode, um das zu tun, was ich tun möchte, oder eine Möglichkeit, diese Funktionalität hinzuzufügen, oder muss ich die Gruppe nur manuell durchlaufen?

Vielen Dank

Antworten auf die Frage(4)

Ihre Antwort auf die Frage