python - 如何通过在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 上的列表,然后导出为 dict:
df.groupby('Key')['Value'].agg(list).to_dict()
结果:
{'key1': ['value1', 'value4'],
'key2': ['value2', 'value1'],
'key3': ['value3', 'value2'],
'key5': ['value5']}
推荐阅读
- flutter - 在 Flutter 中更新对象不起作用
- c - 为什么 GCC 不优化这个循环?
- generics - Swift 5 - 泛型 - RangeReplaceableCollection
- python - python import fastparquet 出现“双重免费或损坏(顶部)”错误
- soap - 在 SoapUI 中将文件附件作为 base64Binary 发送
- string - 为什么我收到错误消息“无效号码”,因为 UserID 是 NUMBER
- node.js - 看不到后端发送的 react js 中的 cookie
- python - 将数据从 python 脚本写入 influxdb 的问题
- powershell - 如何在 Powershell 中查看所有 XML 级别
- python - plotly中的水平表和图表