有一个问题,我给出了解决方案。
源表。
test = pd.DataFrame({"par1": [1, 2, 3, 4, 5], "par2": [11, 12, 13, 14, 15],
"country": ["UA", "UA", "US", "US", "CHI"],
})
print(test)
par1 par2 country
0 1 11 UA
1 2 12 UA
2 3 13 US
3 4 14 US
4 5 15 CHI
它需要转换为以下形式的列表字典:
{'CHI': [{'country': 'CHI', 'par1': 5, 'par2': 15}],
'UA': [{'country': 'UA', 'par1': 1, 'par2': 11},
{'country': 'UA', 'par1': 2, 'par2': 12}],
'US': [{'country': 'US', 'par1': 3, 'par2': 13},
{'country': 'US', 'par1': 4, 'par2': 14}]}
我是这样解决的:
def dictionarizer(g):
global param_dict
param_dict.update({g.country.values[0]: g.to_dict(orient="records")})
param_dict = dict()
test.groupby("country").apply(dictionarizer)
但我不喜欢这个解决方案。全局变量、函数副作用……你能
提出一个更“时尚的解决方案”吗?
更好的是
{'CHI': [{ 'par1': 5, 'par2': 15}],
'UA': [{ 'par1': 1, 'par2': 11},
{ 'par1': 2, 'par2': 12}],
'US': [{ 'par1': 3, 'par2': 13},
{ 'par1': 4, 'par2': 14}]}
结果: