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

Pandas如何将两个DataFrame写入同一Excel的不同工作表

问题原因
  • 首次写法的问题:每次直接调用DataFrame.to_excel()写入同一路径的xlsx文件时,pandas默认使用覆盖写入模式,第二次写入会直接清空文件内第一次写入的全部内容,最终文件只会保留最后一次写入的单个工作表。
  • 第二次写法的问题:创建ExcelWriter对象完成所有工作表写入后,没有执行保存、关闭写入流的操作,文件内容没有完整写入磁盘,属于损坏的不完整文件,因此打开时会提示文件类型无效、无法正常读取。
正确实现方案

优先使用with上下文管理器写法,代码块执行结束后会自动完成文件保存、资源释放,不会出现漏保存的问题,参考代码如下:

import pandas as pd

# 提前完成DataFrame合并逻辑
output_2df = pd.concat([installs, second_installs], ignore_index=True)
output_qdf = pd.concat([a_questionnaires, b_questionnaires], ignore_index=True)

# 初始化Excel写入器,指定openpyxl引擎适配xlsx格式
with pd.ExcelWriter('./installs.xlsx', engine='openpyxl') as writer:
    # 将不同DataFrame写入对应名称的工作表
    output_2df.to_excel(writer, sheet_name='Answers', index=False)
    output_qdf.to_excel(writer, sheet_name='questionnaires', index=False)

如果不使用上下文管理器,手动操作写入器时,写完所有内容必须调用close()方法完成保存(新版pandas不推荐手动调用save()方法),参考写法:

writer = pd.ExcelWriter('./installs.xlsx', engine='openpyxl')
output_2df.to_excel(writer, sheet_name='Answers', index=False)
output_qdf.to_excel(writer, sheet_name='questionnaires', index=False)
# 必须执行关闭操作完成内容落盘
writer.close()

注意事项:使用openpyxl引擎前需要先安装对应依赖,未安装时可执行pip install openpyxl完成安装;代码中的index=False为可选参数,作用是不将pandas的默认行索引写入Excel,可根据实际需求选择是否添加。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.28 00:48:23