2016-11-22 41 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,那么不需要指定列,如果你想要所有这些列... –

相关问题