web-dev-qa-db-fra.com

Pandas: additionner plusieurs colonnes en une seule sans la dernière colonne

Si j'ai un dataframe similaire à celui-ci

Apples   Bananas   Grapes   Kiwis
2        3         nan      1
1        3         7        nan
nan      nan       2        3

J'aimerais ajouter une colonne comme celle-ci

Apples   Bananas   Grapes   Kiwis   Fruit Total
2        3         nan      1        6
1        3         7        nan      11
nan      nan       2        3        5

Je suppose que vous pourriez utiliser df['Apples'] + df['Bananas'] et ainsi de suite, mais ma trame de données réelle est beaucoup plus grande que cela. J'espérais une formule comme df['Fruit Total']=df[-4:-1].sum pourrait faire l'affaire en une ligne de code. Cela n'a pas fonctionné cependant. Existe-t-il un moyen de le faire sans résumer explicitement toutes les colonnes?

25
Tuutsrednas

Vous pouvez d'abord sélectionner par iloc puis sum :

df['Fruit Total']= df.iloc[:, -4:-1].sum(axis=1)
print (df)
   Apples  Bananas  Grapes  Kiwis  Fruit Total
0     2.0      3.0     NaN    1.0          5.0
1     1.0      3.0     7.0    NaN         11.0
2     NaN      NaN     2.0    3.0          2.0

Pour additionner toutes les colonnes, utilisez:

df['Fruit Total']= df.sum(axis=1)
24
jezrael

Si vous utilisez df['Fruit Total']= df.iloc[:, -4:-1].sum(axis=1) sur votre fichier d'origine, la dernière colonne ('Kiwis') ne sera pas ajoutée, vous devez utiliser df.iloc[:, -4:] à la place pour sélectionner toutes les colonnes:

print(df)
   Apples  Bananas  Grapes  Kiwis
0     2.0      3.0     NaN    1.0
1     1.0      3.0     7.0    NaN
2     NaN      NaN     2.0    3.0

df['Fruit Total']=df.iloc[:,-4:].sum(axis=1)

print(df)
   Apples  Bananas  Grapes  Kiwis  Fruit Total
0     2.0      3.0     NaN    1.0          6.0
1     1.0      3.0     7.0    NaN         11.0
2     NaN      NaN     2.0    3.0          5.0
6
Francisco Dura