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