如何用Python替换DataFrame值?Pandas新版本替换脚本失效求助
解决Pandas DataFrame指定值替换失效问题
问题原因
你当前的代码错误在于:
- 开启
regex=True的同时,直接将替换字典传给to_replace,这在新版Pandas中不支持该格式的正则替换逻辑 - 实际你仅需对
Type列做精确值替换,完全不需要启用正则匹配
修正方案
方案1:针对目标列精确替换(推荐)
直接对Type列调用replace方法,传入替换字典即可,无需正则:
import pandas as pd df = pd.DataFrame([ {"Type":"R_NEW","Name":"Rani","Status":"CHANGE"}, {"Type":"R_Change","Name":"Venu","Status":"WAIT"}, {"Type":"PREORDER","Name":"Kiran","Status":"WAIT"} ]) # 仅替换Type列的指定值 df['Type'] = df['Type'].replace({ 'R_NEW': 'N', 'R_Change': 'C', 'RSD_MOVE': 'M', 'PREORDER': 'P' }) print(df)
方案2:全局指定列替换(适用于多列替换场景)
如果需要同时对多列执行替换规则,可以用嵌套字典指定列与对应替换逻辑,此时无需开启regex=True:
df.replace( to_replace={ 'Type': {'R_NEW': 'N', 'R_Change': 'C', 'RSD_MOVE': 'M', 'PREORDER': 'P'} }, inplace=True )
运行结果
执行修正后的代码,输出与预期一致:
Type Name Status 0 N Rani CHANGE 1 C Venu WAIT 2 P Kiran WAIT
内容的提问来源于stack exchange,提问作者Madhu
相关产品推荐
相关产品推荐

