You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何不逐个指定列名统计Pandas DataFrame中全列值为1的行数

Pandas统计所有列取值均为1的行数的简洁方案

你可以直接用列批量判断的方法实现,不需要逐个写列名,核心写法如下:

count = df.eq(1).all(axis=1).sum()

上述代码的逻辑拆解:

  • df.eq(1):将DataFrame内所有元素与1做等值比较,返回结构和原DataFrame完全一致的布尔值表
  • .all(axis=1):按行维度校验,只有当前行所有列的布尔值都为True时才返回True,最终得到每行的校验结果组成的布尔序列
  • .sum():对布尔序列求和(True会被视为1,False视为0),最终结果就是所有列均为1的总行数,代入你的示例数据运行得到的结果就是2。

如果你只需要校验部分列(比如你之前提到的仅统计A、B列均为1的行数),可以先切片指定列再执行判断,写法也比query更简洁:

count = df[['A', 'B']].eq(1).all(axis=1).sum()

如果处理的是超大数据量的DataFrame,想要更高的运行效率,可以转numpy数组计算:

count = (df.to_numpy() == 1).all(axis=1).sum()

内容的提问来源于stack exchange,提问作者rayqz

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.01 21:54:04