我想对大熊猫进行条件聚合,但是有两个条件,我看到了这个Python Pandas Conditional Sum with Groupby,发现确实有用,但是如果我添加另一个条件,例如:
g.apply(lambda x: x[x[x['key2'] == 'one']['data2']<0.4]['data1'].sum())
即添加一个条件,我想将Key2等于1并且data2小于0.4的条件相加。但这不起作用。
这是我得到的错误: 作为索引器提供的不可对齐的布尔系列(布尔系列和被索引对象的索引不匹配
答案 0 :(得分:1)
如果x
的行数为N1,则x[x['key2'] == 'one']
的行数将为N2 <= N1,并且x[x['key2'] == 'one']['data2']<0.4
的行数也将为N2。现在,在最后的x[...]
阶段,x
有N1行,[...]
内部的掩码(即x[x['key2'] == 'one']['data2']<0.4
)有N2行。而且,您无法对具有不同长度的布尔掩码的数据帧进行切片。因此,您可以使用@pmarcol的建议:
g.apply(lambda x: x[(x['key2'] == 'one') & (x['data2'] < 0.4)]['data1'].sum())