Agrégations multiples sur la même colonne avec Pandas GroupBy.agg()
Dans Pandas, GroupBy.agg() permet une agrégation pratique de données en appliquant une fonction à chaque colonne. Cependant, il devient nécessaire d'appeler agg() plusieurs fois lors de l'application de différentes fonctions à la même colonne.
Approche traditionnelle (incorrecte) :
L'approche intuitivement simple serait be:
df.groupby("dummy").agg({ "returns": f1, "returns": f2 })
Malheureusement, cela entraîne une erreur due à un doublon clés.
Solution :
Puisque agg() attend un dictionnaire, la solution simple consiste à créer un dictionnaire avec le nom de la colonne et une liste de fonctions :
df.groupby("dummy").agg({ "returns": [f1, f2] })
Cela se traduira par un DataFrame multi-index avec la sortie des deux agrégations.
Exemple :
Considérez le DataFrame suivant :
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) })
Pour appliquer à la fois la moyenne et la somme à la colonne « retours » :
df.groupby("dummy").agg({ "returns": ["mean", "sum"] })
Cela produira :
returns mean sum dummy 1 0.036901 0.369012
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!