我有一个如下所示的数据框(edata)
Domestic Catsize Type Count
1 0 1 1
1 1 1 8
1 0 2 11
0 1 3 14
1 1 4 21
0 1 4 31
我希望从这个数据框中计算出所有计数的和,其中逻辑与(Domestic和Catsize)的结果为零(0),因此
1 0 0
0 1 0
0 0 0
我用来执行这个过程的代码是:
g=edata.groupby('Type')
q3=g.apply(lambda x:x[((x['Domestic']==0) & (x['Catsize']==0) |
(x['Domestic']==0) & (x['Catsize']==1) |
(x['Domestic']==1) & (x['Catsize']==0)
)]
['Count'].sum()
)
q3
Type
1 1
2 11
3 14
4 31
这段代码运行良好,但是如果数据框中的变量数量增加,则条件的数量会迅速增长。因此,有没有一种聪明的方式来编写一个条件语句,即如果将两个(或更多)变量进行AND运算的结果为零,则执行sum()函数。
KeyError: '[-1 -1 -2 -1 -2 -1 ] not in index
。我已经将列名“Catsize”更改为“Legs”,并将值更改为0、0、2、4、4、5。 - eshfaq ahmad