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

求助:将三维列表转换为DataFrame并导出至多Sheet Excel文件

解决三维列表转多Sheet Excel文件的问题

需求说明

需要将三维列表people_lst中的每个二级列表对应到Excel的一个独立Sheet:

  • 每个二级列表中的子列表作为对应Sheet的列
  • 列名使用给定的column列表
  • Sheet名称按顺序自动生成(如Sheet_1、Sheet_2...)

正确实现代码

import pandas as pd

people_lst = [[[0.04184746, 0.029883996, 0.0009178036, ],
  [0.014391203, 0.016383031, 0.005761528, ],
  [0.010505916, 0.0038218796, 0.0056757517, ]],
 [[0.029479079, 0.023749327, 0.0013516274, ],
  [0.017781705, 0.026531693, 0.003175055,],
  [0.0323914, 0.02072367, 0.006535718, ]]]

column = ["apple", "banana", "candy"]

# 创建Excel写入对象,统一管理多Sheet写入
with pd.ExcelWriter('output.xlsx') as writer:
    # 遍历每个二级列表,生成对应Sheet
    for idx, sheet_data in enumerate(people_lst):
        # 将二级列表转为DataFrame并转置,设置指定列名
        df = pd.DataFrame(sheet_data).T
        df.columns = column
        # 写入Sheet,名称按索引自动生成
        df.to_excel(writer, sheet_name=f"Sheet_{idx+1}", index=False)

代码关键点说明

  1. 多Sheet写入核心:使用pd.ExcelWriter可以在一个Excel文件中创建多个Sheet,避免重复IO操作,适合批量生成Sheet的场景
  2. 数据格式转换:通过.T转置DataFrame,将原二级列表中的子列表转换为Sheet的列
  3. 自动命名Sheet:利用enumerate获取索引,通过f"Sheet_{idx+1}"生成连续的Sheet名称(支持扩展到40个Sheet的需求)
  4. 清理输出:设置index=False避免将DataFrame的索引写入Excel,保持表格整洁

原代码问题分析

你之前使用pd.concat将所有数据合并为单个DataFrame,因此只能生成一个Sheet;且未设置列名,也没有实现多Sheet的独立写入逻辑,无法满足需求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.22 13:09:28