首页 > 解决方案 > 如何计算满足python多个条件的行数?

问题描述

我正在尝试计算数据框中两列的值等于“清除”的数据框中的行数。我的代码是:

pass_both_checks = len(merged_outer(([merged_outer['result_x'] == 'clear']) & [merged_outer['result_y'] == 'clear']))

其中'merged_outer'是数据框,我希望结果是列'result_x'和列'result_y'等于'clear'的所有行的计数。

但是,我收到一个错误:

类型错误:& 不支持的操作数类型:“列表”和“列表”

我该如何解决?如果我在 pass_both_checks 的代码中只插入一个条件,它似乎工作正常。

标签: pythonpandas

解决方案


boolean indexing对于通过添加()周围条件进行过滤:

pass_both_checks = len(merged_outer[(merged_outer['result_x'] == 'clear') & 
                                    (merged_outer['result_y'] == 'clear')])

sum用于 count Trues:

pass_both_checks = ((merged_outer['result_x'] == 'clear') & 
                    (merged_outer['result_y'] == 'clear')).sum()

或者比较两列并True通过以下方式测试每行是否所有 s DataFrame.all

pass_both_checks = (merged_outer[['result_x', 'result_y']] == 'clear').all(axis=1).sum()

推荐阅读