如何调整Pandas格式,将嵌套Python字典转为目标样式Excel?
问题:将Python嵌套字典转换为指定样式的Excel文件
我尝试把Python嵌套字典转成Excel文件,但没法把Pandas DataFrame调整成想要的样式。
我的字典结构如下:
data = { 'Key 1': { 'PP': {'A': 105.08, 'B': 9.03, 'C': 0.12, 'D': 3.18, 'E': 0.5}, 'RP': {'A': 43.35, 'B': 6.92, 'C': -0.13, 'D': 3.03, 'E': -0.1}, 'SC': {'A': 36.15, 'B': 7.3, 'C': -0.01, 'D': 2.32, 'E': 0.34} }, 'Key2': { 'PP': {'A': 616.68, 'B': 11.09, 'C': 15.47, 'D': 3.82, 'E': 12.45}, 'RP': {'A': 416.92, 'B': 7.77, 'C': 6.48, 'D': 2.78, 'E': 5.25}, 'SC': {'A': 298.54, 'B': 9.57, 'C': 13.67, 'D': 3.51, 'E': 10.67} } }
我用下面的代码生成了接近预期的结果:
df = pd.DataFrame.from_dict( {(i,j):data[i][j] for i in data.keys() for j in data[i]}, orient = 'index' )
当前输出样式:
- 索引为双层结构(Key 1/PP、Key 1/RP等),每行对应一个内层字典的键值对,列是A、B、C、D、E。但Key 1和Key2对应的行没有合并表头,层级显示分散。
期望的输出样式:
- 第一列(索引列)采用双层合并表头:Key 1作为第一级,下方包含PP、RP、SC三行;Key2作为第一级,下方同样包含PP、RP、SC三行。第一级单元格垂直合并,第二级单元格独立显示。列保持A、B、C、D、E,整体层级清晰、样式规整。
解决方案
要实现期望的样式,只需在生成带多层索引的DataFrame后,通过Excel写入工具启用单元格合并功能即可,步骤如下:
完整代码
import pandas as pd data = { 'Key 1': { 'PP': {'A': 105.08, 'B': 9.03, 'C': 0.12, 'D': 3.18, 'E': 0.5}, 'RP': {'A': 43.35, 'B': 6.92, 'C': -0.13, 'D': 3.03, 'E': -0.1}, 'SC': {'A': 36.15, 'B': 7.3, 'C': -0.01, 'D': 2.32, 'E': 0.34} }, 'Key2': { 'PP': {'A': 616.68, 'B': 11.09, 'C': 15.47, 'D': 3.82, 'E': 12.45}, 'RP': {'A': 416.92, 'B': 7.77, 'C': 6.48, 'D': 2.78, 'E': 5.25}, 'SC': {'A': 298.54, 'B': 9.57, 'C': 13.67, 'D': 3.51, 'E': 10.67} } } # 生成带多层索引的DataFrame df = pd.DataFrame.from_dict( {(i,j): data[i][j] for i in data.keys() for j in data[i]}, orient='index' ) # 写入Excel并自动合并多层索引的重复单元格 with pd.ExcelWriter('output.xlsx', engine='openpyxl') as writer: df.to_excel(writer, merge_cells=True)
关键说明
merge_cells=True参数会自动识别多层索引中重复的第一级单元格(如Key 1对应的三行),并完成垂直合并,完全匹配期望的样式。- 需要提前安装
openpyxl引擎库,执行pip install openpyxl即可。
内容的提问来源于stack exchange,提问作者kpof94
相关产品推荐
相关产品推荐

