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
Libérer: 2024-12-16 20:31:10
original
816 Les gens l'ont consulté

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')
Copier après la connexion

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)
Copier après la connexion

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
Copier après la connexion

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!

source:php.cn
Déclaration de ce site Web
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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal