Python统计DataFrame多条件匹配行数的TypeError报错如何解决
错误原因
你写的代码存在两处语法问题:
- 你给两个判断条件的外层额外套了
[],把pandas返回的布尔Series转换成了Python原生列表,而Python列表本身不支持&按位与运算,直接触发了类型错误 - 筛选DataFrame行需要用方括号
[],你误用了小括号(),属于语法逻辑错误
修复方案
方案1(更简洁,推荐)
直接对布尔掩码求和,pandas中True对应数值1、False对应数值0,求和结果就是符合条件的行数:
pass_both_checks = ((merged_outer['result_x'] == 'clear') & (merged_outer['result_y'] == 'clear')).sum()
方案2(兼容你原本想用len的写法)
用布尔掩码筛选出符合条件的行之后再取长度:
pass_both_checks = len(merged_outer[(merged_outer['result_x'] == 'clear') & (merged_outer['result_y'] == 'clear')])
注意事项
每个独立的判断条件必须用小括号()包裹,因为&运算符的优先级高于==等比较运算符,不裹括号会触发运算逻辑错误。
内容的提问来源于stack exchange,提问作者Anirudh Maru
相关产品推荐
相关产品推荐

