使用python对多索引表中的行值求和
我尝试从下面的数据框中获取“1”的所有发生次数之和的额外列(总计)。Dataframe具有多索引列(ID、效果和持续时间) 我的指令:使用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
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的意图,这里的意图是明确地将列作为过滤器。我不确定这是否是目的。