【问题标题】:How to create a dictionary by grouping key for different values in python?如何通过在python中为不同的值分组键来创建字典?
【发布时间】:2021-12-23 02:50:38
【问题描述】:

'我有一个数据框

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'>

【问题讨论】:

    标签: python dataframe dictionary grouping key-value


    【解决方案1】:

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

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

    结果:

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

    【讨论】:

    • 感谢您的解释。
    猜你喜欢
    • 2014-09-13
    • 2018-01-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-09-30
    • 1970-01-01
    相关资源
    最近更新 更多