如何用Python基于另一个CSV列更新目标CSV的多列数据
Python实现CSV列值替换方案
用pandas可以高效完成这个需求,代码简洁且易维护,以下是具体实现方案:
前置准备
如果未安装pandas,先执行安装命令:
pip install pandas
完整代码
import pandas as pd # 读取两个CSV文件 master_df = pd.read_csv('Master.csv') reference_df = pd.read_csv('Reference.csv') # 构建Code到Value的映射字典(确保Code为字符串类型,避免类型不匹配导致的匹配失败) reference_df['Code'] = reference_df['Code'].astype(str) code_to_value = reference_df.set_index('Code')['Value'].to_dict() # 替换Master.csv中的Column2和Column4 master_df['Column2'] = master_df['Column2'].astype(str).map(code_to_value) master_df['Column4'] = master_df['Column4'].astype(str).map(code_to_value) # 保存处理后的结果到新CSV文件 master_df.to_csv('Result.csv', index=False)
关键逻辑说明
- 映射字典构建:通过
set_index('Code')['Value'].to_dict()将Reference.csv的Code作为键、Value作为值生成字典,后续替换时能快速查找对应值,效率远高于循环匹配。 - 类型统一:强制将
Code及Master中待替换列转为字符串,避免因数值/字符串类型不一致导致的匹配失败(比如"C001"和C001会被视为不同值)。 - 批量替换:
map()方法批量处理列内所有值,无需手动遍历行。
示例验证
输入文件示例
Master.csv
Column1,Column2,Column3,Column4 A,C001,X,D002 B,C003,Y,D001
Reference.csv
Code,Value C001,Category1 C003,Category3 D001,Data1 D002,Data2
输出Result.csv
Column1,Column2,Column3,Column4 A,Category1,X,Data2 B,Category3,Y,Data1
可选扩展
- 如果需要保留原始列数据,可以先复制列再替换:
master_df['Column2_Original'] = master_df['Column2'] master_df['Column2'] = master_df['Column2'].map(code_to_value)
内容的提问来源于stack exchange,提问作者Utso Das
相关产品推荐
相关产品推荐

