如何计算在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 的代码中只插入一个条件,它似乎工作正常。
回答
通过boolean indexing添加()周围条件进行过滤:
pass_both_checks = len(merged_outer[(merged_outer['result_x'] == 'clear') &
(merged_outer['result_y'] == 'clear')])
或sum用于计数True:
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()