Ajouter une colonne au DataFrame GroupBy à l'aide de Pandas Transform
Lorsque vous travaillez avec des opérations groupby dans pandas, il est souvent utile d'ajouter une nouvelle colonne au trame de données résultante. Une méthode pour y parvenir consiste à utiliser la fonction .map(), comme démontré dans l'exemple. Cependant, une approche alternative et plus simple consiste à utiliser la fonction .transform().
.transform() nous permet d'appliquer une fonction à chaque groupe de la trame de données et de renvoyer une série avec les résultats. La série renvoyée aura un index aligné sur le dataframe d'origine.
Pour illustrer, commençons par le dataframe fourni :
df = pd.DataFrame({'c': [1, 1, 1, 2, 2, 2, 2], 'type': ['m', 'n', 'o', 'm', 'm', 'n', 'n']})
Notre objectif est de compter les valeurs de type pour chaque c et ajoutez une colonne de taille c.
g = df.groupby('c')['type'].value_counts().reset_index(name='t')
Ce code compte les valeurs de chaque groupe et crée une nouvelle colonne nommée t.
Pour ajouter la colonne de taille en utilisant .transform( ), nous pouvons faire ce qui suit :
g['size'] = df.groupby('c')['type'].transform('size')
.transform('size') applique la fonction size à chaque groupe, qui renvoie la taille de chaque groupe. La série résultante est alignée sur l'index du dataframe d'origine, ce qui nous permet de l'ajouter en tant que nouvelle colonne à g.
La sortie sera un dataframe avec une colonne supplémentaire nommée size :
c type t size 0 1 m 1 3 1 1 n 1 3 2 1 o 1 3 3 2 m 2 4 4 2 n 2 4
L'utilisation de .transform() fournit un moyen plus concis et plus simple d'ajouter une colonne au dataframe d'origine à partir d'une agrégation groupby.
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!