Python 如何使用pandas根据多列条件计算行数?

Python 如何使用pandas根据多列条件计算行数?,python,pandas,Python,Pandas,如何使用&和或条件计算csv文件行数 在下面的代码中,我想计算所有具有True/False=False和status=OK的行,并且在任何一列openingSoon、underConstruction和comingSoon中具有“+”值的行 我试过: checkOne = df['id'].loc[(df['True/False'] == 'FALSE') & (df['status'] == 'OK') & (df['comingSoon'] == '+') or (df['

如何使用&和或条件计算csv文件行数

在下面的代码中,我想计算所有具有True/False=False和status=OK的行,并且在任何一列openingSoon、underConstruction和comingSoon中具有“+”值的行

我试过:

checkOne =  df['id'].loc[(df['True/False'] == 'FALSE') & (df['status'] == 'OK') & (df['comingSoon'] == '+') or (df['openingSoon'] == '+') or (df['underConstruction'] == '+')].count()
错误:

Traceback (most recent call last):
 File "<stdin>", line 1, in <module>
 File "/usr/local/lib/python3.9/site-packages/pandas/core/generic.py", line 1329, in __nonzero__
raise ValueError(
ValueError: The truth value of a Series is ambiguous. Use a.empty, a.bool(), a.item(), a.any() or a.all().
使用|对于按位或,对于不需要过滤的count Trues值,使用总和:

对于测试布尔值df['True/False']==False,也可以通过~df['True/False']简化

如果真/假字符串为真/假,则使用:

使用|对于按位或,对于不需要过滤的count Trues值,使用总和:

对于测试布尔值df['True/False']==False,也可以通过~df['True/False']简化

如果真/假字符串为真/假,则使用:


您好@jezrael,上面给出了这个错误:回溯最近的调用last:File,第1行,在/usr/local/lib/python3.9/site-packages/pandas/core/generic.py,第1324行,在uu invert\uu new\u data=self中。mgr.applyoperator.invert文件/usr/local/lib/python3.9/site-packages/pandages/core/internals/managers.py,第407行,在apply applicated=b.applyf中,**kwargs File/usr/local/lib/python3.9/site-packages/pandas/core/internals/blocks.py,第346行,在apply result=funcself.values中,**kwargs TypeError:unary~:'str'的操作数类型不正确,当我尝试不使用~时,我得到了以下错误:&:'str'和'bool'@baobaba1988-这意味着FALSE不是布尔值,而是字符串,所以需要df['True/FALSE']=='FALSE'我已经按照您的建议尝试过了,但是现在它抛出了这个错误:TypeError:无法对一个数据类型为[bool]的数组和[bool]@baobaba1988类型的标量执行“rand”—所以请尝试将df['True/False']='False'更改为df['True/False']='False'Hi@jezrael,上面给出了这个错误:回溯最近的调用last:File,第1行,在文件/usr/local/lib/python3.9/site-packages/pandas/core/generic.py的第1324行中,在应用=b.applyf的第407行中,在文件/usr/local/lib/python3.9/site-packages/pandas/core/internals/managers.py中,**kwargs File/usr/local/lib/python3.9/site-packages/pandas/core/internals/blocks.py,第346行,在apply result=funcself.values中,**kwargs TypeError:unary~的操作数类型不正确:'str',当我尝试不使用~时,我得到以下错误:&:'str和'bool'@baobaba1988-这意味着FALSE不是布尔值,但是字符串,所以需要df['True/False']='False'我已经按照你的建议尝试过了,但是现在它抛出了这个错误:TypeError:不能用一个数据类型的[bool]数组和[bool]@baobaba1988类型的标量执行'rand.'-所以试着把df['True/False']='False'改为df['True/False']='False'
checkOne =  (~df['True/False'] & 
             (df['status'] == 'OK') & 
             (df['comingSoon'] == '+') | 
             (df['openingSoon'] == '+') | 
             (df['underConstruction'] == '+')).sum()
checkOne =  ((df['True/False'] == 'FALSE') & 
             (df['status'] == 'OK') & 
             (df['comingSoon'] == '+') | 
             (df['openingSoon'] == '+') | 
             (df['underConstruction'] == '+')).sum()