【问题标题】:Converting dataframe to dictionary with column having duplicate values and dictionary value as list [duplicate]将数据框转换为字典,其中列具有重复值和字典值作为列表 [重复]
【发布时间】:2019-12-26 13:22:37
【问题描述】:

我想达到这样的结果。

对于这个数据框:

Name    Val
   A      1
   A      2
   B      1
   B      3
   B      4

我想要一本像 {'A':[1,2],'B';[1,3,4]} 这样的字典

我将拥有两个这样的数据框,我的目标是实现每个键的价值差异。与键“B”一样,其他数据框的值可以为 1,5。

我不想使用循环,因为数据框会很大。

我尝试过使用

df.set_index(key).to_dict()[value-colum] 但这给我每个键只有一个值。

我尝试将 group by 用于数据帧

【问题讨论】:

  • 这就是我要找的亚当。现在我只想检查如何知道这些字典的值的差异

标签: python pandas dataframe pandas-groupby


【解决方案1】:

这将涵盖您需要的内容:

In [22]:out = {}

在 [23]:for i in df["Name"].tolist():
    ...: out[i] = df[df["Name"]==i]["Val"].tolist()
    ...:

[24]:出
输出[24]: {'A': [1, 2], 'B': [1, 3, 4]}

【讨论】:

    【解决方案2】:

    你可以试试:

    ddict = {
      'A':[],
      'B':[]
    }
    

    按列过滤数据并从另一列返回值。将每个字典键设置为这些结果:

    ddict['A'] = list(df[df['Name'] == 'A']['Val'].values)
    ddict['B'] = list(df[df['Name'] == 'B']['Val'].values)
    

    输出:

    {
    'A': ['1', '2'],
    'B': ['1', '3', '4']
    }
    

    编辑:或者,如果您想遍历所有键:

     for key in ddict.keys():
        ddict[key] = list(df[df['Name'] == key]['Val'].values)
    

    【讨论】:

      猜你喜欢
      • 2020-09-07
      • 2017-04-19
      • 1970-01-01
      • 2021-02-12
      • 2011-10-17
      • 2017-10-01
      • 2020-01-18
      • 2023-01-13
      • 2020-11-11
      相关资源
      最近更新 更多