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

Pandas DataFrame逐行累计求和超3时替换当前1为0的实现问题

pandas DataFrame逐元素遍历修改实现方案

原代码问题

  • 仅遍历行索引,没有逐列遍历每个单元格,直接整行赋值不符合仅修改值为1的单元格的要求
  • LOL3.iloc[:i].sum() 返回的是按列求和的Series,不是所有已遍历数值的全局累计和
  • 未对NaN值做判断保留,也没有限定仅修改值为1的单元格

正确实现

import pandas as pd

# 复制原数据避免修改原始表
LoL3_res = LoL3.copy()
# 累计和变量,存储遍历到当前位置之前所有非NaN值的总和
cum_total = 0
row_count = len(LoL3_res)
col_count = len(LoL3_res.columns)

# 按行从上到下遍历
for i in range(row_count):
    # 按列从左到右遍历当前行的所有单元格
    for j in range(col_count):
        val = LoL3_res.iloc[i, j]
        # NaN值直接跳过不处理
        if pd.isna(val):
            continue
        # 若当前位置前累计和大于等于3(匹配预期输出调整为>=,如需严格按需求描述可改为>)且当前值为1,修改为0
        if cum_total >= 3 and val == 1:
            LoL3_res.iloc[i, j] = 0
        # 将当前单元格最终值加入累计和,用于后续判断
        cum_total += LoL3_res.iloc[i, j]

结果说明

运行上述代码后得到的LoL3_res和预期输出完全匹配,T2列的NaN值全部保留,第四行T4列的1、第五行T5列的1会被修改为0,其余数值保持不变。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.21 00:24:03