多次调用同一函数更新大型Excel表格效率低下,求优化方案
优化大型Excel表格批量更新的方案
你的代码慢的核心问题是每次调用函数都重复读写整个Excel文件——磁盘IO操作本身速度远低于内存操作,大型表格反复读写的开销会被放大,导致效率极低。
优化思路
只做一次Excel读取,在内存中完成所有修改,最后只写入一次文件,彻底消除重复IO的开销。
优化后的代码
import pandas as pd # 把所有需要执行的修改任务整理成列表,每项对应原函数的一组参数 update_tasks = [ ('PartNum', 'A050-BAA-GTPN-S30', 'Spare Parts File', 'a050-metal-iom.pdf'), ('PartNum', 'A050-BAA-SSPE-S30', 'Spare Parts File', 'a050-metal-iom.pdf'), ('PartNum', 'A050-BAA-GTPN-S30', 'Manual File', 'a050-metal-iom.pdf'), ('PartNum', 'A050-BAA-SSPE-S30', 'Manual File', 'a050-metal-iom.pdf'), ('PartNum', 'A050-BAA-GTPN-S30', 'Data Sheet File', 'a050-metal-iom.pdf'), ('PartNum', 'A050-BAA-SSPE-S30', 'Data Sheet File', 'a050-metal-iom.pdf'), ] # 一次性读取整个表格到内存 df = pd.read_excel("PumpsLiterature.xlsx") # 批量处理所有修改 for sort_col, match_val, target_col, new_val in update_tasks: # 按条件定位行并修改对应列的值 df.loc[df[sort_col].str.contains(match_val), target_col] = new_val # 最后只写入一次文件,index=False避免生成多余的索引列 df.to_excel("PumpsLiterature.xlsx", index=False)
额外优化建议
如果你的PartNum是精确匹配(即只需要修改完全等于目标值的行,而非包含该值的行),可以把匹配条件改成df[sort_col] == match_val,这样比str.contains的模糊匹配速度更快,进一步提升效率。
内容的提问来源于stack exchange,提问作者brad65340
相关产品推荐
相关产品推荐

