如何统计Pandas DataFrame中两列同时为True的行数
Pandas统计两布尔列同时为True的行数解决方案
以下方法均为Pandas内置向量化运算,无需遍历行,千万级行的大体量DataFrame也可以快速计算完成:
- 方法1:逻辑与直接求和(最简洁,性能最优)
布尔值True会被自动识别为1、False为0,两列做逻辑与运算后直接求和,结果就是同时为True的总行数:
count = (df['eethuis'] & df['caternaar']).sum()
- 方法2:多列通用判断法
如果后续需要扩展到判断3个及以上列同时为True的场景,可使用all()方法指定轴向为行,无需写多个逻辑与符号:
count = df[['eethuis', 'caternaar']].all(axis=1).sum()
- 方法3:先筛选再计数(适用于需要留存符合条件的行数据的场景)
如果需要提取所有同时满足两个条件的完整行记录,可以先筛选子表再取长度:
# 筛选得到所有符合条件的行 target_df = df[df['eethuis'] & df['caternaar']] # 统计行数 count = len(target_df)
异常排查
如果计算结果为0和预期不符,可先检查两列的数据类型是否为布尔型,避免列值为字符串格式的'True'/'False'导致判断失效,可先执行类型转换后再计算:
df['eethuis'] = df['eethuis'].astype(bool) df['caternaar'] = df['caternaar'].astype(bool)
内容的提问来源于stack exchange,提问作者Vengenecx
相关产品推荐
相关产品推荐

