Heim >Backend-Entwicklung >Python-Tutorial >Wie kann ich mit Pandas GroupBy.agg() mehrere Aggregationen für dieselbe Spalte durchführen?
Mehrere Aggregationen in derselben Spalte mit Pandas GroupBy.agg()
In Pandas ermöglicht GroupBy.agg() eine bequeme Aggregation von Daten durch Anwenden einer Funktion auf jede Spalte. Es ist jedoch erforderlich, agg() mehrmals aufzurufen, wenn verschiedene Funktionen auf dieselbe Spalte angewendet werden.
Traditioneller (falscher) Ansatz:
Der intuitiv unkomplizierte Ansatz wäre sein:
df.groupby("dummy").agg({ "returns": f1, "returns": f2 })
Leider führt dies zu einem Fehler aufgrund von Duplikaten Schlüssel.
Lösung:
Da agg() ein Wörterbuch erwartet, besteht die einfache Lösung darin, ein Wörterbuch mit dem Spaltennamen und einer Liste von Funktionen zu erstellen:
df.groupby("dummy").agg({ "returns": [f1, f2] })
Dies führt zu einem Multi-Index-DataFrame mit der Ausgabe beider Aggregationen.
Beispiel:
Bedenken Sie den folgenden DataFrame:
import pandas as pd import datetime as dt import numpy as np pd.np.random.seed(0) df = pd.DataFrame({ "date": [dt.date(2012, x, 1) for x in range(1, 11)], "returns": 0.05 * np.random.randn(10), "dummy": np.repeat(1, 10) })
So wenden Sie Mittelwert und Summe auf die Spalte „Erträge“ an:
df.groupby("dummy").agg({ "returns": ["mean", "sum"] })
Dies ergibt:
returns mean sum dummy 1 0.036901 0.369012
Das obige ist der detaillierte Inhalt vonWie kann ich mit Pandas GroupBy.agg() mehrere Aggregationen für dieselbe Spalte durchführen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!