2016-11-22 38 views
2

我試圖從下面的數據框中得到'1'的所有出現總和的額外列(總和)。數據框具有多索引列(ID,效果和持續時間)。使用python對多索引表中的行值進行求和

ID Effect Duration X1 X2 X3 
1888 High 5 1 0 1 
1313 High 10 0 1 0 
3455 Low 20 1 0 0 

我CMD:

df['Total'] = df[df.columns].sum(1) 

這給了我一個意外的值在 '合計' 欄。

獲得輸出:

ID Effect Duration X1 X2 X3 Total 
1888 High 5 1 0 1 11 
1313 High 10 0 0 0 0 
3455 Low 20 1 1 1 111 

所需的輸出:

ID Effect Duration X1 X2 X3 Total 
1888 High 5 1 0 1 2 
1313 High 10 0 0 0 0 
3455 Low 20 1 1 1 3 

我怎樣才能獲得使用python我期望的輸出?謝謝

回答

2

您的列是字符串,而不是整數。在進行操作前,先將列轉換爲適當的類型:

df[['X1', 'X2', 'X3']].astype(int).sum(1) 
+0

如果正確編制索引,那麼'df.astype(int).sum(1)'就足夠了。 –

+0

我認爲任何OP都有我提到的問題,通過查看數字,或者它正在執行其他代碼,描述什麼以及問題是否需要關閉或更改。 – Boud

+0

無論如何,要實現所期望的,如果索引確實是(ID,效果和持續時間)multiindex,那麼不需要指定列,如果你想要所有這些列... –

相關問題