求助:将三维列表转换为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)
代码关键点说明
- 多Sheet写入核心:使用
pd.ExcelWriter可以在一个Excel文件中创建多个Sheet,避免重复IO操作,适合批量生成Sheet的场景 - 数据格式转换:通过
.T转置DataFrame,将原二级列表中的子列表转换为Sheet的列 - 自动命名Sheet:利用
enumerate获取索引,通过f"Sheet_{idx+1}"生成连续的Sheet名称(支持扩展到40个Sheet的需求) - 清理输出:设置
index=False避免将DataFrame的索引写入Excel,保持表格整洁
原代码问题分析
你之前使用pd.concat将所有数据合并为单个DataFrame,因此只能生成一个Sheet;且未设置列名,也没有实现多Sheet的独立写入逻辑,无法满足需求。
内容的提问来源于stack exchange,提问作者Megan
相关产品推荐
相关产品推荐

