You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

多次调用同一函数更新大型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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.10 15:47:21