pandas使用replace()替换数据后保存csv再读取内容未更新问题
问题原因
Pandas 的数据处理方法默认不会修改原对象,而是返回修改后的新对象。你现有代码中的 df.replace(numbered, fullname) 没有将返回结果赋值给变量,也没有开启原地修改参数,因此原 df 的数据没有发生任何变化,最终写入 CSV 文件的依然是未替换的编号内容。
修复方案
两种可直接使用的修复写法:
- 方案1:将替换结果赋值给新变量(更推荐,不会修改原始数据,便于回溯)
import pandas as pd numbered = [1,2,3,4] # 注意:如果a/b/c/d是字符串值,需要添加引号包裹,否则会被识别为未定义变量报错 fullname = ['a','b','c','d'] # 接收replace返回的替换后数据 df_replaced = df.replace(numbered, fullname) # 保存时添加index=False可避免写入多余的索引列,后续读取更方便 df_replaced.to_csv('fullname.csv', index=False) df_fullname = pd.read_csv('fullname.csv') df_fullname
- 方案2:开启
inplace参数直接修改原DataFrame
import pandas as pd numbered = [1,2,3,4] fullname = ['a','b','c','d'] # 添加inplace=True参数,直接修改原df df.replace(numbered, fullname, inplace=True) df.to_csv('fullname.csv', index=False) df_fullname = pd.read_csv('fullname.csv') df_fullname
补充说明
- 若你需要只替换指定列的编号值,可以把写法调整为
df['指定列名'] = df['指定列名'].replace(numbered, fullname),避免误修改其他列的内容。 inplace操作风险较高,一旦执行错误无法恢复原始数据,非必要场景优先选择赋值新变量的写法。
内容的提问来源于stack exchange,提问作者Umar Shaikh
相关产品推荐
相关产品推荐

