Heim >Backend-Entwicklung >Python-Tutorial >Wie kann ich mit Pandas GroupBy.agg() mehrere Aggregationen für dieselbe Spalte durchführen?

Wie kann ich mit Pandas GroupBy.agg() mehrere Aggregationen für dieselbe Spalte durchführen?

Patricia Arquette
Patricia ArquetteOriginal
2024-12-06 17:50:151025Durchsuche

How Can I Perform Multiple Aggregations on the Same Column Using Pandas GroupBy.agg()?

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!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn