Python 将df转换为多个嵌套字典/json

Python 将df转换为多个嵌套字典/json,python,pandas,Python,Pandas,我在将df转换为3级嵌套字典时遇到问题,有没有办法在没有在每行上循环的丑陋函数的情况下实现这一点?类似于.groupby.apply的东西 输入/测向: project,stage,error_code,count Project_1,stage_1,0,8 Project_1,stage_1,1103,3 Project_1,stage_2,0,4 Project_1,stage_2,1103,2 Project_2,stage_1,0,14 Project_2,stage_1,1103,2

我在将df转换为3级嵌套字典时遇到问题,有没有办法在没有在每行上循环的丑陋函数的情况下实现这一点?类似于.groupby.apply的东西

输入/测向:

project,stage,error_code,count
Project_1,stage_1,0,8
Project_1,stage_1,1103,3
Project_1,stage_2,0,4
Project_1,stage_2,1103,2
Project_2,stage_1,0,14
Project_2,stage_1,1103,2
Project_2,stage_1,1105,1
Project_2,stage_2,0,5
期望输出:

[
    'Project_1': {
        'stage_1': {
            '0': 8,
            '1103': 3
        },
        'stage_2': {
            '0': 14,
            '1103': 2
        }
    },
    'Project_2': {
        'stage_1': {
            '0': 14,
            '1103': 2,
            '1105': 1
        },
        'stage_2': {
            '0': 5,
        }
    }
]

您可以使用
groupby
unstack

d=df.groupby(['project','stage']).\
        apply(lambda x : dict(zip(x['error_code'],x['count']))).\
           unstack(0).to_dict()
Out[12]: 
{'Project_1': {'stage_1': {0: 8, 1103: 3}, 'stage_2': {0: 4, 1103: 2}},
 'Project_2': {'stage_1': {0: 14, 1103: 2, 1105: 1}, 'stage_2': {0: 5}}}