如何用Python批量替换Excel中的旧名称为对应新名称?
批量替换Excel旧名称为对应新名称的高效实现
核心思路
400行的映射数据完全不算大,用字典实现是最优解——构建和查询的效率都足够高,不用有性能顾虑。下面用Python结合工具快速完成整个流程,不管是直接读Excel还是复制列内容处理都能搞定。
步骤1:快速构建新旧名称映射字典
用pandas(简洁高效)
import pandas as pd # 读取映射Excel文件,假设表头是Column A(旧名称)、Column B(新名称) map_df = pd.read_excel("名称映射文件.xlsx") # 一键构建旧名称到新名称的映射字典 name_mapping = dict(zip(map_df["Column A"], map_df["Column B"]))
用openpyxl(无需额外安装pandas时可选)
from openpyxl import load_workbook wb = load_workbook("名称映射文件.xlsx") ws = wb.active name_mapping = {} # 跳过表头,从第2行开始遍历数据 for row in ws.iter_rows(min_row=2, values_only=True): old_name, new_name = row[0], row[1] if old_name: # 跳过空行避免无效映射 name_mapping[old_name] = new_name
步骤2:批量替换目标文件中的旧名称
方式1:直接操作Excel文件批量替换
用pandas的replace方法一键处理指定列:
# 读取待替换的Excel文件 target_df = pd.read_excel("待替换文件.xlsx") # 替换指定列的旧名称,示例处理column A和column B target_df["column A"] = target_df["column A"].replace(name_mapping) target_df["column B"] = target_df["column B"].replace(name_mapping) # 保存替换后的文件,index=False避免生成多余索引列 target_df.to_excel("替换完成文件.xlsx", index=False)
注:遇到无对应映射的旧名称时,replace会自动保留原名称,无需额外处理。
方式2:复制列内容到程序中处理
如果只想复制目标列的旧名称到程序里处理,直接转成列表批量替换:
# 把从Excel复制的旧名称粘贴到这里 old_names = [ "apple-er3", "alk-er43", # ... 其他旧名称 ] # 批量替换,找不到映射的保留原名称 new_names = [name_mapping.get(name, name) for name in old_names] # 打印结果后直接复制回Excel即可 print(new_names)
内容的提问来源于stack exchange,提问作者Anton Larsson
相关产品推荐
相关产品推荐

