首页 > 解决方案 > 如何通过在python中为不同的值分组键来创建字典?

问题描述

'我有一个数据框

df
      Key Value
0     key1 value1
1     key2 value2
2     key3 value3
3     key1 value4
4     key5 value5
5     key2 value1
6     key3 value2
...
n     keyn valuen

我想对同一个键的所有值进行分组,因此尝试将其转换为字典

pd.Series(df.Value.values,index=df.Key).to_dict()

但这会用最新记录覆盖键的值

例如

{'key1':'value5','key2':'value1','key3':'value2','key5':'value5'}

代替

{'key1':['value1','value4','value5'],'key2':['value2','value1'],'key3':['value3','value2'],'key5':'value5'}

我尝试将 to_dict 的方向更改为

pd.Series(df.Value.values,index=df.Key).to_dict('list')

但它抛出了错误

TypeError: unsupported type: <class 'str'>

标签: pythondataframedictionarygroupingkey-value

解决方案


您可以将值聚合为 groupby 上的列表,然后导出为 dict:

df.groupby('Key')['Value'].agg(list).to_dict()

结果:

{'key1': ['value1', 'value4'],
 'key2': ['value2', 'value1'],
 'key3': ['value3', 'value2'],
 'key5': ['value5']}

推荐阅读