Maison >développement back-end >Tutoriel Python >Comment ajouter correctement une nouvelle colonne à un DataFrame Pandas après une opération groupby().sum() ?

Comment ajouter correctement une nouvelle colonne à un DataFrame Pandas après une opération groupby().sum() ?

Patricia Arquette
Patricia Arquetteoriginal
2024-12-16 20:31:10811parcourir

How to Correctly Add a New Column to a Pandas DataFrame After a groupby().sum() Operation?

Création d'une nouvelle colonne à partir de la sortie de pandas groupby().sum()

Lors de l'exécution d'un calcul sur une colonne dans un Pandas DataFrame à l'aide de groupby() fonction, il est souvent nécessaire de réincorporer les résultats dans le DataFrame. Une façon d'y parvenir consiste à créer une nouvelle colonne basée sur les calculs groupés.

Dans l'exemple fourni, l'objectif est de créer une nouvelle colonne, Data4, qui contient la somme de la colonne Data3 pour chaque date. .

Le code présenté tente d'attribuer les résultats groupés directement à la nouvelle colonne, mais il donne des valeurs NaN. Pour résoudre ce problème, la méthode transform() doit être utilisée à la place :

df['Data4'] = df['Data3'].groupby(df['Date']).transform('sum')

La méthode transform() renvoie une Series alignée sur l'index du DataFrame, permettant de l'ajouter directement en tant que nouvelle colonne . Le paramètre 'sum' spécifie le calcul que nous voulons effectuer.

Le code mis à jour ci-dessous démontre l'application correcte de transform() :

import pandas as pd

df = pd.DataFrame({
    'Date': ['2015-05-08', '2015-05-07', '2015-05-06', '2015-05-05',
             '2015-05-08', '2015-05-07', '2015-05-06', '2015-05-05'],
    'Sym': ['aapl', 'aapl', 'aapl', 'aapl', 'aaww', 'aaww', 'aaww', 'aaww'],
    'Data2': [11, 8, 10, 15, 110, 60, 100, 40],
    'Data3': [5, 8, 6, 1, 50, 100, 60, 120]
})

df['Data4'] = df['Data3'].groupby(df['Date']).transform('sum')

print(df)

La sortie du code modifié calcule correctement le somme de Data3 pour chaque date et ajoute les résultats au DataFrame en tant que nouvelle colonne Data4 :

         Date   Sym  Data2  Data3  Data4
0  2015-05-08  aapl     11      5     55
1  2015-05-07  aapl      8      8    108
2  2015-05-06  aapl     10      6     66
3  2015-05-05  aapl     15      1    121
4  2015-05-08  aaww    110     50     55
5  2015-05-07  aaww     60    100    108
6  2015-05-06  aaww    100     60     66
7  2015-05-05  aaww     40    120    121

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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn