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

Python循环写入两个DataFrame到同一Excel工作表时生成重复标签问题

你遇到的新建带数字后缀工作表的问题,核心原因是openpyxl引擎默认在追加模式下写入同名称工作表时,不会复用已有工作表,而是自动添加数字后缀生成新表;同时你分开两次创建ExcelWriter上下文打开文件,也没有配置对应参数指定复用已有工作表。

方案1(推荐,适配pandas 1.4.0及以上版本)

使用if_sheet_exists="overlay"参数,指定工作表存在时直接在表内叠加写入,同时建议把多个写入操作放在同一个ExcelWriter上下文内,避免重复打开文件:

# 路径前加r取消转义,避免路径中的特殊字符被错误转义
with pd.ExcelWriter(r'\\porfiler03\gtdshare\ERA5-MAPPING\PCA\PCA_ERA5_output.xlsx', engine="openpyxl", mode="a", if_sheet_exists="overlay") as writer:
    w.to_excel(writer, sheet_name=sheet) 
    finalpcs.to_excel(writer, sheet_name=sheet, startrow=5) 

如果是长循环逻辑需要多次写入同一个工作表,把循环放在ExcelWriter的上下文内部即可,无需每次循环都重新打开文件,性能也更优。

方案2(适配pandas 1.4.0以下版本)

如果你的pandas版本低于1.4.0,不支持if_sheet_exists参数,可以手动加载已有工作簿,把已存在的工作表信息同步给ExcelWriter后再写入:

from openpyxl import load_workbook

file_path = r'\\porfiler03\gtdshare\ERA5-MAPPING\PCA\PCA_ERA5_output.xlsx'
# 提前加载已有的工作簿文件
book = load_workbook(file_path)

with pd.ExcelWriter(file_path, engine="openpyxl") as writer:
    # 同步已有工作簿和工作表信息到writer对象
    writer.book = book
    writer.sheets = {ws.title: ws for ws in book.worksheets}
    
    w.to_excel(writer, sheet_name=sheet)
    finalpcs.to_excel(writer, sheet_name=sheet, startrow=5)

内容的提问来源于stack exchange,提问作者user2100039

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.07 04:00:02