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

Pandas如何将多个DataFrame导出为带指定Sheet名的Excel文件

问题说明

需要将40个DataFrame导出至同一个Excel文件,每个DataFrame对应一个独立工作表,工作表按顺序命名为Sheet1到Sheet40。原有实现尝试先将所有DataFrame追加到空白DataFrame后再导出,示例代码如下:

import pandas as pd
import numpy as np

def calculate_file():
    sheet_df = pd.DataFrame()
    for i in range(40):
#This is a toy dataframe
        random_data = np.random.randint(10,25,size=(5,3))
        df = pd.DataFrame(random_data, columns=['Column_1','Column_2','Column_3'])
    sheet_df = sheet_df.append(df)
    return(sheet_df)
calculate_file()

该代码无法实现导出40个独立工作表的预期效果。

问题原因
  • 核心逻辑偏差:将多个DataFrame纵向追加合并为单个DataFrame的写法,导出时天然只能生成1个工作表,无法实现多sheet输出的需求
  • 缩进错误:sheet_df = sheet_df.append(df)语句位于for循环外部,循环执行完成后只会保留最后一轮生成的DataFrame,连合并40份数据的效果都无法实现
  • 接口过时:pandas 2.0及以上版本已经正式移除DataFrame的append方法,运行该代码会直接触发属性报错
正确实现方案

多工作表导出不需要提前合并DataFrame,借助pandas.ExcelWriter创建统一的文件写入句柄,在循环中逐个将DataFrame写入指定名称的工作表即可,参考代码如下:

import pandas as pd
import numpy as np

def calculate_file(save_path="result.xlsx"):
    # 初始化Excel写入上下文,执行结束后会自动保存、关闭文件
    with pd.ExcelWriter(save_path, engine="openpyxl") as writer:
        for sheet_idx in range(1, 41):
            # 以下为示例DataFrame生成逻辑,替换为实际业务的DataFrame构造代码即可
            random_data = np.random.randint(10, 25, size=(5, 3))
            df = pd.DataFrame(random_data, columns=['Column_1', 'Column_2', 'Column_3'])
            # 将当前DataFrame写入对应序号的工作表,index=False表示不导出行索引
            df.to_excel(writer, sheet_name=f"Sheet{sheet_idx}", index=False)

# 调用函数即可在指定路径生成包含40个独立工作表的Excel文件
calculate_file()

注意事项

  • 首次运行前需要安装xlsx写入依赖,执行命令:pip install openpyxl
  • 禁止在for循环内部初始化ExcelWriter对象,否则每次循环都会覆盖之前写入的内容,最终文件只会保留最后一个工作表
  • 如果需要保留DataFrame的默认行索引,删除to_excel方法中的index=False参数即可

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.28 10:18:18