使用python对多索引表中的行值求和

使用python对多索引表中的行值求和,python,pandas,Python,Pandas,我尝试从下面的数据框中获取“1”的所有发生次数之和的额外列(总计)。Dataframe具有多索引列(ID、效果和持续时间) 我的指令: 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

我尝试从下面的数据框中获取“1”的所有发生次数之和的额外列(总计)。Dataframe具有多索引列(ID、效果和持续时间)

我的指令:

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
期望输出:

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获得所需的输出?谢谢

您的列是字符串而不是整数。在执行操作之前,首先将列转换为适当的类型:

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

如果索引正确,那么
df.astype(int).sum(1)
就足够了。我认为OP有我通过查看数字提到的问题,或者它正在执行其他代码,所描述的内容和问题必须关闭或更改。不管如何,为了达到预期效果,如果索引确实是(ID、效果和持续时间)多索引,那么如果你想要所有的列,就不需要指定列……你所有的点都是有效的,我只是回答OP的意图,这里的意图是明确地将列作为过滤器。我不确定这是否是目的。