如何通过对 python 中不同值的键进行分组来创建字典?

How to create a dictionary by grouping key for different values in 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'>

您可以在 groupby 上将值聚合为列表,然后导出为字典:

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

结果:

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