如何通过对 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']}
'我有一个数据框
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']}