将字典写入Excel

问题描述 投票:0回答:1

我正在尝试将Python字典转换为Excel文件。但我没能按照我想要的 excel 文件的样子来格式化数据框。

我有一个如下形状的字典:

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'
                            )

输出如下:

output

我希望它看起来像:

desired output

python pandas dataframe pivot pivot-table
1个回答
2
投票

根据您当前的方法,您可以链接

unstack
并使用
swaplevel
sort_index
对列进行后处理:

df = (pd.DataFrame.from_dict(
                            {(i,j):data[i][j]
                             for i in data.keys()
                             for j in data[i]},
                             orient = 'index'
                            )
        .unstack().swaplevel(axis=1).sort_index(axis=1)
     )

或者,将字典理解更改为:

out = pd.DataFrame.from_dict({k: {(k1, k2): v for k1, d2 in d.items()
                                  for k2, v in d2.items()}
                              for k, d in data.items()}, orient='index')

输出:

           PP                                 RP                              SC                          
            A      B      C     D      E       A     B     C     D     E       A     B      C     D      E
Key 1  105.08   9.03   0.12  3.18   0.50   43.35  6.92 -0.13  3.03 -0.10   36.15  7.30  -0.01  2.32   0.34
Key2   616.68  11.09  15.47  3.82  12.45  416.92  7.77  6.48  2.78  5.25  298.54  9.57  13.67  3.51  10.67
© www.soinside.com 2019 - 2024. All rights reserved.