我的名为df的数据框看起来像
Dig CUI importance
2240 a123 0.28912
2240 b123 0.39021
2230 x133 0.12923
3330 cak2 0.12903
3330 xa45 0.21093
3330 2429 0.21893
对于上面的数据框,我正在通过以下代码运行它,
df = (df.groupby('dig').apply(lambda x: dict(zip(x['cui'],x['importance']))).to_dict())
我得到的输出为
{2240:{a123:0.28912, b123:0.39021},2230:{x133:0.12923},3330:{cak2: 0.12903, xa45:0.21093, 2429:0.21893}}
但是我的输出字典中需要列。我需要建议
输出应该像
{2240:[{cui:a123, importance:0.28912},{cui:b123, importance:0.39021}],2230:[{cui:x133, importance:0.12923},3330:[{cui:cak2, importance:0.12903},{cui:xa45, importance:0.21093},{cui:2429, importance:0.21893}]]}
建议我这样做。
答案 0 :(得分:0)
一种方法是像您一样对Dig进行分组,但在应用内部调用to_dict('records')
:
In [103]: df.groupby("Dig").apply(lambda x: x.drop("Dig", 1).to_dict('records')).to_dict()
Out[103]:
{2230: [{'CUI': 'x133', 'importance': 0.12922999999999998}],
2240: [{'CUI': 'a123', 'importance': 0.28912},
{'CUI': 'b123', 'importance': 0.39021}],
3330: [{'CUI': 'cak2', 'importance': 0.12903},
{'CUI': 'xa45', 'importance': 0.21093},
{'CUI': '2429', 'importance': 0.21893}]}