2017-08-17 3 views
0

Voici un exemple de trame de données. Set_index a été utilisé pour définir Constraint_ID comme index, qui s'aligne avec le reste des colonnes. Ce que je veux, c'est mettre la somme de TotalSP, Onpeak et Offpeak dans les espaces juste en dessous (espaces qui ont été créés en raison du désalignement). Est-ce possible? Si ce n'est pas le cas, puis-je créer une autre ligne juste en dessous des libellés des colonnes pour afficher les totaux des colonnes?Calcul de la somme d'une trame de données et son ajout en haut

  Constraint Name TotalSP  Onpeak Offpeak 
Constraint_ID    
77127 aaaaaaaaaaaaaaaaaa -2174.5  -2027.21 -147.29 
98333 bbbbbbbbbbbbbbbbbb -1180.62 -1180.62  0 
1049 cccccccccccccccccc -1036.53 -886.77  -149.76 
+0

Vous souhaitez que les sommes deviennent une autre ligne de la base de données? Quels seront les identifiants Constraint_ID et Constraint de la nouvelle ligne? – DyZ

+0

DZY - aucun ID de contrainte pour cette ligne. Nom de contrainte à être le nombre de la colonne de nom de contrainte. –

Répondre

1

D'abord, vous pouvez calculer la somme avec df.sum:

In [189]: df2 = df.iloc[:, 1:].sum().to_frame().T.rename({0 : 'sum'}); df2 
Out[189]: 
    TotalSP Onpeak Offpeak 
sum -4391.65 -4094.6 -297.05 

Ensuite, vous pouvez concaténer avec votre premier dataframe utilisant pd.concat:

In [191]: pd.concat([df2, df]) 
Out[191]: 
      Constraint Name Offpeak Onpeak TotalSP 
sum     NaN -297.05 -4094.60 -4391.65 
77127 aaaaaaaaaaaaaaaaaa -147.29 -2027.21 -2174.50 
98333 bbbbbbbbbbbbbbbbbb  0.00 -1180.62 -1180.62 
1049 cccccccccccccccccc -149.76 -886.77 -1036.53 

Avertissement, je ne recommande ceci à moins que vous ne vouliez écrire ceci à un csv.

+1

Apprendre 'to_frame' :-) gentil ~ merci – Wen

+0

Merci. Sous le nom de contrainte où somme est NaN, comment pourrais-je obtenir le compte? –

+0

@ShyamaSonti Pour cet exemple, vous voulez que le compte soit 3? –