我有以下資料框:
pd.DataFrame({'id':[1,1,1,2,2], 'key': ['a', 'a', 'b', 'a', 'b'], 'value': ['kkk', 'aaa', '5', 'kkk','8']})
我想將其轉換為以下資料框:
id value
1 {'a':['kkk', 'aaa'], 'b': 5}
2 {'a':['kkk'], 'b': 8}
我正在嘗試使用.to_dict方法執行此操作,但輸出是
df.groupby(['id','key']).aggregate(list).groupby('id').aggregate(list)
{'value': {1: [['kkk', 'aaa'], ['5']], 2: [['kkk'], ['8']]}}
我應該執行 dict 理解還是有一個有效的邏輯來構建這樣的通用 json/dict?
uj5u.com熱心網友回復:
在 yougroupby(['id', 'key'])和之后agg(list),您可以按索引的第一級分組,對于其中的每一組,使用droplevel to_dict:
new_df = df.groupby(['id', 'key']).agg(list).groupby(level=0).apply(lambda x: x['value'].droplevel(0).to_dict()).reset_index(name='value')
輸出:
>>> new_df
id value
0 1 {'a': ['kkk', 'aaa'], 'b': ['5']}
1 2 {'a': ['kkk'], 'b': ['8']}
或者,更簡單:
new_df = df.groupby('id').apply(lambda x: x.groupby('key')['value'].agg(list).to_dict())
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/447803.html
標籤:json python-3.x 熊猫 数据框 字典
上一篇:如何在字典中選擇多個最小值?
下一篇:在c#中將鍵值對串列添加到字典中
