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

Python Pandas 按列条件实现行值匹配计数(类似Excel Sumif功能)

问题解决办法

错误原因

你原来的代码df[df == df['E']].count(axis=1)存在两个问题:

  • 比对逻辑错误:df == df['E']默认是pandas列维度的广播匹配,会将E列的每个值与整列数据做比对,而非按行取当前行的E值和本行其他列比对,因此返回结果全为0
  • 统计范围错误:直接用全量df做比对,会把E列本身也纳入统计范围,不符合需求

正确代码

直接使用pandas向量化比对方法即可,性能远高于行遍历/apply方案:

# 仅选中A/B/C/D四列,按行和当前行E列值比对,求和得到相等次数
df['count'] = df[['A', 'B', 'C', 'D']].eq(df['E'], axis=0).sum(axis=1)

如果你的表中除了A/B/C/D/E外还有其他列,只要排除E列统计的话,可以改写成更通用的写法:

df['count'] = df.drop('E', axis=1).eq(df['E'], axis=0).sum(axis=1)

结果验证

运行后输出的df和你给出的期望结果完全一致:

A   B   C   D   E  count
0  14   5  20  14  14      2
1   4   2  20   3   2      1
2   5  54   7   6   5      1
3   4   3   3   2   3      2
4   1   2   8   6   1      1

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 17:36:06