Comment additionner ensemble plusieurs colonnes d'une dataframe avec pandas en python ?

Published: 05 septembre 2021

Tags: Python; Pandas; DataFrame;

DMCA.com Protection Status

Exemples de comment additionner ensemble plusieurs colonnes d'une dataframe avec pandas en python:

Créer un dataframe avec pandas

Créons d'abord une dataframe aléatoire avec pandas

import pandas as pd
import numpy as np

data = np.random.randint(100, size=(10,3))

df = pd.DataFrame(data=data,columns=['A','B','C'])

donne par exemple

    A   B   C
0  37  64  38
1  22  57  91
2  44  79  46
3   0  10   1
4  27   0  45
5  82  99  90
6  23  35  90
7  84  48  16
8  64  70  28
9  83  50   2

Additionner toutes les colonnes d'une dataframe

Pour additionner toutes les colonnes d'un dtaframe, une solution consiste à utiliser sum()

df.sum(axis=1)

donne ici

0    139
1    170
2    169
3     11
4     72
5    271
6    148
7    148
8    162
9    135

Pour créer une nouvelle colonne dans le dataframe avec la somme de toutes les colonnes :

df['(A+B+C)'] = df.sum(axis=1)

donne

dtype: int64
    A   B   C  (A+B+C)
0  37  64  38      139
1  22  57  91      170
2  44  79  46      169
3   0  10   1       11
4  27   0  45       72
5  82  99  90      271
6  23  35  90      148
7  84  48  16      148
8  64  70  28      162
9  83  50   2      135

Additonner certaines colonnes uniquement

Pour n'ajouter que quelques colonnes, une solution consiste à créer une liste de colonnes que nous souhaitons additionner :

columns_list = ['B', 'C']

et faire

df['(B+C)'] = df[columns_list].sum(axis=1)

donne par exemple:

    A   B   C  (A+B+C)  (B+C)
0  37  64  38      139    102
1  22  57  91      170    148
2  44  79  46      169    125
3   0  10   1       11     11
4  27   0  45       72     45
5  82  99  90      271    189
6  23  35  90      148    125
7  84  48  16      148     64
8  64  70  28      162     98
9  83  50   2      135     52

Exemple avec des colonnes des chaînes de caractères

Un autre exemple avec une dataframe contenant des colonnes d'entiers et de chaînes de caractères

import pandas as pd
import numpy as np

data = np.random.randint(100, size=(10,3))

df = pd.DataFrame(data=data,columns=['A','B','C'])

df['D'] = ['a','a','a','a','a','a','a','a','a','a']
df['E'] = ['b','b','b','b','b','b','b','b','b','b']

donne

    A   B   C  D  E
0  57  53  90  a  b
1  18  26  22  a  b
2  53  86  18  a  b
3  81  85  47  a  b
4  45  18  39  a  b
5  37  49  17  a  b
6  16  90  10  a  b
7  27  93  54  a  b
8  46   2  67  a  b
9   8  46  54  a  b

Si nous appliquons sum()

df.sum(axis=1)

alors la fonction additionne UNIQUEMENT les colonnes d'entiers :

0    200
1     66
2    157
3    213
4    102
5    103
6    116
7    174
8    115
9    108
dtype: int64

Alors que si nous appliquons sum() uniquement sur les colonnes contenant des chaînes de caractères:

df[['D','E']].sum(axis=1)

il concaténera les colonnes :

0    ab
1    ab
2    ab
3    ab
4    ab
5    ab
6    ab
7    ab
8    ab
9    ab
dtype: object

Références