基于Pandas实现Excel新旧编码批量匹配转换的自动化方案问询
高效实现Excel跨Sheet编码匹配方案
针对你需要将Sheet1的Old_Codes与Sheet2的Old_Codes匹配,并填充对应New_Codes的需求,这里提供两种比手动操作简洁高效的Pandas实现方案,完全替代文本分列、手动筛选替换的繁琐流程:
方案一:使用merge(通用场景,支持重复编码)
如果Sheet2中存在重复的Old_Codes值,merge会自动保留所有匹配结果,适合需要处理多对多映射的场景:
import pandas as pd # 读取Excel文件的两个工作表 df_sheet1 = pd.read_excel("你的文件路径.xlsx", sheet_name="Sheet1") df_sheet2 = pd.read_excel("你的文件路径.xlsx", sheet_name="Sheet2") # 左连接匹配,仅保留Sheet2中需要的编码列,避免引入无关数据 df_sheet1 = df_sheet1.merge( df_sheet2[["Old_Codes", "New_Codes"]], on="Old_Codes", how="left" # 保证Sheet1的所有行都被保留,未匹配的New_Codes显示为NaN ) # 将结果保存回Excel(可选择覆盖原文件或保存为新文件) df_sheet1.to_excel("更新后的文件.xlsx", sheet_name="Sheet1", index=False)
方案二:使用map(高效单映射场景)
如果Sheet2中的Old_Codes是唯一值(每个旧编码对应唯一新编码),map的执行效率更高,代码也更简洁:
import pandas as pd df_sheet1 = pd.read_excel("你的文件路径.xlsx", sheet_name="Sheet1") df_sheet2 = pd.read_excel("你的文件路径.xlsx", sheet_name="Sheet2") # 将Sheet2转换为"旧编码:新编码"的字典 code_mapping = df_sheet2.set_index("Old_Codes")["New_Codes"].to_dict() # 直接为Sheet1添加New_Codes列并完成映射 df_sheet1["New_Codes"] = df_sheet1["Old_Codes"].map(code_mapping) # 保存结果 df_sheet1.to_excel("更新后的文件.xlsx", sheet_name="Sheet1", index=False)
优势说明
- 两种方案都能一键完成批量匹配,避免手动操作的失误,数据量越大效率提升越明显
- 未匹配到的编码会自动填充为
NaN,方便后续快速识别处理
内容的提问来源于stack exchange,提问作者Boomer
相关产品推荐
相关产品推荐

