gpt4 book ai didi

python - Pandas 中多列的逻辑与

转载 作者:太空宇宙 更新时间:2023-11-03 14:39:58 26 4
gpt4 key购买 nike

我有一个如下所示的数据框(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() 函数

最佳答案

您可以先使用 pd.DataFrame.all 进行过滤否定:

cols = ['Domestic', 'Catsize']
res = df[~df[cols].all(1)].groupby('Type')['Count'].sum()

print(res)
# Type
# 1 1
# 2 11
# 3 14
# 4 31
# Name: Count, dtype: int64

关于python - Pandas 中多列的逻辑与,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54156949/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com