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

如何在新版Pandas中替换DataFrame值?旧代码失效修复

修复方案

问题分析

  1. 大小写不匹配:原数据中Type列的R_NEW与替换字典里的R_New大小写不一致,正则默认区分大小写,导致无法匹配替换。
  2. 全局替换误修改其他列:原代码未指定替换列,会对所有列应用规则,加上value=None的设置,导致Status列的WAIT被错误替换为NaN(新版Pandas中replace的参数逻辑有变化)。
  3. 参数用法不符合新版规范:新版Pandas中,使用正则替换字典时,更推荐将字典传递给regex参数,而非to_replace。

修复后的代码

import pandas as pd

df = pd.DataFrame([
    {"Type":"R_NEW","Status":"CHANGE","Email":"gra.com"},
    {"Type":"R_Change","Status":"WAIT","Email":"rog.com"},
    {"Type":"Preorder","Status":"WAIT","Email":"dgrse.com"}
])

# 只针对Type列,用正则字典替换,修正大小写匹配
df["Type"] = df["Type"].replace(
    regex={
        r"^R_NEW$": "NEW",
        r"^R_Change$": "Change",
        r"^R_DELETE$": "Delete",
        r"^Preorder$": "Preorder"
    }
)

print(df)

代码说明

  • 指定替换列:只对Type列操作,避免影响Status、Email等其他列。
  • 修正正则匹配:用^和$确保完全匹配(避免部分匹配的意外情况),同时修正键的大小写与数据一致。
  • 符合新版Pandas规范:将正则替换字典直接传给regex参数,逻辑更清晰,适配新版行为。

输出结果

Type  Status      Email
0       NEW  CHANGE    gra.com
1    Change    WAIT    rog.com
2  Preorder    WAIT  dgrse.com

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.12 03:07:45