我已经创建了数据帧,请查看下面的代码段。
data = {'id': [101,102],
'name': ['xyz', 'xyz'],
'value1' : [41,42],
'value2' : [42,32]
}
df = pd.DataFrame(data, columns = ['id', 'name','value1','value2'])
print(df)
数据帧输出
id name value1 value2
101 xyz 41 42
102 xyy 42 32
这里我只想从这个数据框架创建嵌套字典
预期输出
{'101':{'name':'xyz'
'data' : [{'value1' : 41,'value2':42},
{'value1': 42,'value2':32}]}}
我试图通过以下代码来完成,但它不起作用,所以请你帮我解决这个
#试过的代码段
代码
print({n: grp.loc[n].to_dict('index')for n, grp in df.set_index(['id','name']).group by(level='id')})
输出
{101: {'xyz': {'value1': 41, 'value2': 42}}, 102: {'xyz': {'value1': 42, 'value2': 32}}}
代码
print({k:f.groupby('name')['value1'].apply(list).to_dict() for k, f in df.groupby('id')})
输出
{101: {'xyz': [41]}, 102: {'xyz': [42]}}
所需输出
{'101':{'name':'xyz'
'data' : [{'value1' : 41,'value2':42},
{'value1': 42,'value2':32},
]}}
假设df是:
df:
id name value1 value2
0 101 xyz 41 42
1 102 xyy 42 32
2 101 xyz 46 46
3 102 xyy 40 39
df.groupby(['id', 'name'])[['value1', 'value2']]
.apply(lambda x: x.to_dict(orient='records')).reset_index(name='data')
.set_index('id').to_dict(orient='index')
{101: {'name': 'xyz', 'data': [{'value1': 41, 'value2': 42}, {'value1': 46, 'value2': 46}]}, 102: {'name': 'xyy', 'data': [{'value1': 42, 'value2': 32}, {'value1': 40, 'value2': 39}]}}