2017-10-18 7 views
1

je aa ensemble de DataFrames et voudrais ajouter une suite totale qui résume seulement l'une des colonnes (exemple tableau ci-dessous)(Python): DataFrames ajouter une ligne totale qui est la somme d'une seule colonne

Je peux ajouter une colonne totale avec df.loc['Total']= df.sum() ou même df.loc['Total'] = [df[x].sum() for x in df.columns], cependant j'ai besoin de toutes les colonnes sauf A pour montrer le blanc et j'ai quelques problèmes avec la syntaxe.

Item A B C D E F 
1  1 2 3 4 5 6 
2  5 10 15 20 25 30 
3  10 20 30 40 50 60 
4  5 15 25 35 45 55 
Total 21 

Toute aide est appréciée, Merci

Répondre

2

Je pense que vous devez sélectionner la colonne pour somme et puis spécifiez la colonne pour la sortie:

df.loc['Total', 'A']= df['A'].sum() 
print (df) 
     Item  A  B  C  D  E  F 
0  1.0 1.0 2.0 3.0 4.0 5.0 6.0 
1  2.0 5.0 10.0 15.0 20.0 25.0 30.0 
2  3.0 10.0 20.0 30.0 40.0 50.0 60.0 
3  4.0 5.0 15.0 25.0 35.0 45.0 55.0 
Total NaN 21.0 NaN NaN NaN NaN NaN 

Remplacer NaN à l'espace vide est possible, mais se mélanger types - numérique avec des chaînes et certaines fonctions doivent avoir échoué:

df.loc['Total'] = df[['A']].sum().reindex(df.columns, fill_value='') 
print (df) 
     Item A B C D E F 
0  1 1 2 3 4 5 6 
1  2 5 10 15 20 25 30 
2  3 10 20 30 40 50 60 
3  4 5 15 25 35 45 55 
Total  21  

Si besoin ajouter des valeurs à 2 colonnes besoin attribuer une liste de valeurs:

df.loc[len(df), ['Item','A']]= ['Total', df['A'].sum()] 
print (df) 
    Item  A  B  C  D  E  F 
0  1 1.0 2.0 3.0 4.0 5.0 6.0 
1  2 5.0 10.0 15.0 20.0 25.0 30.0 
2  3 10.0 20.0 30.0 40.0 50.0 60.0 
3  4 5.0 15.0 25.0 35.0 45.0 55.0 
4 Total 21.0 NaN NaN NaN NaN NaN 
1

En utilisant append

In [3884]: s = pd.Series({'Item': 'Total', 'A': df['A'].sum()}, 
         index=df.columns).fillna('') 

In [3885]: df.append(s, ignore_index=True) 
Out[3885]: 
    Item A B C D E F 
0  1 1 2 3 4 5 6 
1  2 5 10 15 20 25 30 
2  3 10 20 30 40 50 60 
3  4 5 15 25 35 45 55 
4 Total 21 

Retourne une copie pour faciliter


Détails

In [3886]: df 
Out[3886]: 
    Item A B C D E F 
0  1 1 2 3 4 5 6 
1  2 5 10 15 20 25 30 
2  3 10 20 30 40 50 60 
3  4 5 15 25 35 45 55 

In [3887]: s 
Out[3887]: 
Item Total 
A   21 
B 
C 
D 
E 
F 
dtype: object