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

如何在Python中对多列按行实现SUMIF与COUNTIF功能

实现按列索引的条件计数与求和(类似Excel COUNTIF/SUMIF)

核心思路

由于表头不固定,我们通过0-based列索引指定目标列(Excel的第2列对应pandas的索引1,第4列对应索引3,以此类推,直到第18列对应索引17),然后对这些列逐行应用条件统计。

步骤代码实现

假设你已经用pandas读取了Excel文件,得到DataFrame对象df:

1. 定义目标列索引

先列出需要统计的列的索引(0-based):

# 对应Excel的第2、4、6...18列
target_col_indices = list(range(1, 19, 2))  # 生成[1,3,5,...,17]

2. 实现条件计数(等价于Excel COUNTIF)

统计每行中目标列里≥0.05的数值数量:

# 先筛选出目标列,再判断每个值是否≥0.05,最后按行求和(True=1,False=0)
df['count_ge_0.05'] = df.iloc[:, target_col_indices].ge(0.05).sum(axis=1)
  • iloc[:, target_col_indices]:通过索引选取目标列
  • ge(0.05):等价于>=0.05,返回布尔值矩阵
  • sum(axis=1):按行求和,得到每行符合条件的数量

3. 实现条件求和(等价于Excel SUMIF)

对每行中目标列里≥0.05的数值求和:

# 先筛选目标列,将不符合条件的值替换为0,再按行求和
df['sum_ge_0.05'] = df.iloc[:, target_col_indices].where(df.iloc[:, target_col_indices] >= 0.05, 0).sum(axis=1)
  • where(condition, 0):保留符合条件的值,不符合的替换为0
  • sum(axis=1):按行求和得到符合条件的数值总和

处理非数值列(可选)

如果目标列存在非数值数据,先转换为数值类型(无法转换的设为NaN,不参与统计):

# 转换目标列为数值类型
numeric_target_cols = df.iloc[:, target_col_indices].apply(pd.to_numeric, errors='coerce')
# 再进行计数和求和
df['count_ge_0.05'] = numeric_target_cols.ge(0.05).sum(axis=1)
df['sum_ge_0.05'] = numeric_target_cols.where(numeric_target_cols >= 0.05, 0).sum(axis=1)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.17 00:51:19