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

如何用Python自动按文件号将多组DataFrame存入Excel?

问题

我有一个包含5个唯一文件号的DataFrame,针对每个文件号会生成两个不同的DataFrame(例如文件号55对应df1、df2,文件号56对应另一组df1、df2等)。我希望将结果存入单个Excel文件,每个文件号对应一个以该文件号命名的工作表,每个工作表中存放对应文件号的两个DataFrame,且无需手动指定文件号,需从df['File Number'].unique()中获取。我尝试了以下代码:

writer = pd.ExcelWriter('test.xlsx',engine='xlsxwriter')  
workbook=writer.book
worksheet=workbook.add_worksheet('55')
writer.sheets['55'] = worksheet
df1.to_excel(writer,sheet_name='55',startrow=0 , startcol=0)  
df2.to_excel(writer,sheet_name='55',startrow=15, startcol=0)
writer.save()

但这里需要手动指定文件号55,请问如何实现自动化生成包含所有文件号对应结果的Excel工作表?

解决方案

通过循环遍历所有唯一文件号,结合自动生成对应DataFrame的逻辑,就能实现无需手动指定文件号的批量写入。

示例代码

import pandas as pd

# 从原始DataFrame中获取所有唯一文件号
file_numbers = df['File Number'].unique()

# 使用with语句管理Excel写入器,自动处理文件保存与资源释放
with pd.ExcelWriter('test.xlsx', engine='xlsxwriter') as writer:
    # 遍历每个文件号
    for file_num in file_numbers:
        # ---------- 替换为你的业务逻辑 ----------
        # 根据当前文件号生成对应的两个DataFrame
        # 示例:假设你有一个函数专门生成这两个DataFrame
        # df1, df2 = get_dfs_by_file_number(file_num)
        df1 = ...  # 生成当前文件号对应的第一个DataFrame
        df2 = ...  # 生成当前文件号对应的第二个DataFrame
        # --------------------------------------
        
        # 将文件号转为字符串作为工作表名称(Excel要求表名为字符串)
        sheet_name = str(file_num)
        # 写入第一个DataFrame,从第0行开始
        df1.to_excel(writer, sheet_name=sheet_name, startrow=0, startcol=0, index=False)
        # 写入第二个DataFrame,从第15行开始(可根据实际行数调整间距)
        df2.to_excel(writer, sheet_name=sheet_name, startrow=15, startcol=0, index=False)

关键说明

  • 无需手动创建工作表:to_excel会自动创建指定名称的工作表,无需额外调用add_worksheet
  • 使用with语句:替代手动调用writer.save(),避免资源泄漏
  • 动态工作表名称:通过str(file_num)将文件号转为合法的工作表名称
  • 灵活调整位置:修改startrow参数可以调整两个DataFrame的间距,比如如果df1有N行,可设startrow=N+2来留空行分隔

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.23 08:47:13