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

如何调整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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.24 04:50:53