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

如何基于字典键值对高效替换pandas DataFrame指定列的取值

问题核心原因

你操作后列值未修改的核心原因是:pandas 中绝大多数数据操作方法默认返回新对象,不会直接修改原 DataFrame,你调用 df.replace({"col1": di}) 后没有将结果赋值回原变量,原 df 自然不会发生变化。
同时你问题中贴的代码与预期输出的对应关系写反了,实际要实现的是 col1 列中 1 替换为 A、2 替换为 B、未匹配的 w 保留原值的效果,以下是两种常用的高效实现方案:


方案1:使用 replace 方法(适合全匹配替换,逻辑直观)

这是你当前尝试的方法,仅需补充赋值操作即可生效,适合中小规模数据集:

# 赋值回原变量即可生效,不会修改原数据的内存结构
df = df.replace({"col1": di})

# 不推荐使用 inplace=True 参数,易产生不可预期的副作用
# df.replace({"col1": di}, inplace=True)

方案2:map + fillna 组合(性能更优,适合大规模数据集)

当 DataFrame 数据量超过10万行时,该方案的执行效率比 replace 高30%以上:

# map 会将匹配到的值做映射,未匹配的返回NaN,再用fillna把原值填回即可
df['col1'] = df['col1'].map(di).fillna(df['col1'])

执行上述任意一种方法后,得到的结果如下:

col1 col2
0    w    a
1    A    2
2    B  NaN

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 22:06:03