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

Pandas使用iloc进行列求和时仅更新非零值的实现问题

你可以用pandas原生的向量化where方法实现需求,全程不需要提前遍历判断列是否包含0值,对大型DataFrame的执行效率也很高:

# 先提取目标操作区域,计算各列求和结果
target_area = data.iloc[:, 1:]
col_sum_res = target_area.sum(axis=0)

# 仅更新原值不为0的位置,0值保持不变
data.iloc[:, 1:] = target_area.where(target_area == 0, col_sum_res, axis=1)

逻辑说明

  • where方法的规则为:当位置的值满足第一个参数的判断条件时,保留原值,否则替换为第二个参数的对应值
  • 这里设置判断条件为target_area == 0,即原值为0时保留,原值非0时替换为对应列的求和结果
  • 参数axis=1用于保证求和结果按列匹配,避免维度对齐错误

如果追求更精简的写法,也可以合并为一行代码:

data.iloc[:,1:] = data.iloc[:,1:].where(data.iloc[:,1:] == 0, data.iloc[:,1:].sum(axis=0), axis=1)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 11:45:08