如何统计DataFrame中所有列值均为1的行数?
解决方案
假设你使用的是Python的pandas库,以下是几种简洁高效的实现方式:
方法一:all() + sum()组合(推荐)
这是处理这类需求最直接的方式,通过逐行校验所有列值是否为1,再统计符合条件的行数:
import pandas as pd # 构建示例DataFrame data = { "name": [1, 1, 1, 1], "gender": [1, 0, 1, 1], "address": [1, 0, 1, 0], "phone no.": [1, 0, 1, 1] } df = pd.DataFrame(data) # 统计所有列均为1的行数 match_count = (df == 1).all(axis=1).sum() print(match_count) # 输出:2
代码说明
df == 1:生成与原DataFrame结构一致的布尔型DataFrame,每个位置标记原数值是否等于1.all(axis=1):按行校验,仅当该行所有列都为True时返回True.sum():布尔值中True等价于1、False等价于0,求和后即为符合条件的行数
方法二:逐行遍历(仅小数据量适用)
如果需要更直观的逐行判断逻辑,可以用循环实现,但大数据量下效率远低于第一种方法:
match_count = 0 for _, row in df.iterrows(): if (row == 1).all(): match_count += 1 print(match_count) # 输出:2
内容的提问来源于stack exchange,提问作者Vineeth Sai
相关产品推荐
相关产品推荐

