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

Python Pandas循环批量替换数据失效问题排查与解决

问题分析与解决:循环批量替换DataFrame值失效

循环失效的原因

  1. 未累积替换结果:pandas的replace方法默认返回新的DataFrame,不会修改原对象。你循环里每次都基于原始的df6执行替换,把结果赋值给h后,下一次循环又重新从df6开始操作——前面的替换完全没被保留,最后h只保留了最后一次替换的结果。
  2. 循环次数不足:你的循环用了range(22),但bz1和bz2各有23个元素,最后一组值的替换根本没执行。

解决方法

方法1:修正循环逻辑,累积替换结果

先把h初始化为df6的副本,之后每次循环都基于上一次替换后的h继续操作,同时用zip直接配对新旧值,避免索引出错:

bz1 = [90100, 90200, 90300, 90400, 90500, 90600, 90700, 90800, 90900, 91000,
       91100, 91200, 91300, 91400, 91500, 91600, 91700, 91800, 91900, 92000,
       92100, 92200, 92300]
bz2 = [1010, 1020, 1030, 1040, 1050, 1060, 1070, 1080, 1090, 1100,
       1110, 1120, 1130, 1140, 1150, 1160, 1170, 1180, 1190, 1200,
       1210, 1220, 1230]

# 初始化h为df6的副本
h = df6.copy()
# 遍历所有配对的新旧值
for old_val, new_val in zip(bz1, bz2):
    h = h.replace(old_val, new_val)
h

方法2:更高效的pandas原生写法(推荐)

pandas的replace支持直接传入字典做批量映射,底层是向量化操作,比循环效率高得多:

replace_map = dict(zip(bz1, bz2))
h = df6.replace(replace_map)
h

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.21 12:52:39