【问题标题】:iterate over df and output dictionary with list of values遍历 df 并使用值列表输出字典
【发布时间】:2019-09-05 16:00:33
【问题描述】:

我需要将数据框转换为字典,但无法从数据框中获取所有值以显示在字典中。

数据框:

id| region | Num | 
--|--------|-----|
2 | NYC    |2344 |
3 | NYC    |3243 |
4 | NYC    |3253 |
5 | NYC    |2345 |
6 | CHI    |8756 |
7 | CHI    |9786 |
8 | CHI    |7674 |
9 | CHI    |6678 |
10| ATL    |1234 |

代码:

df.set_index('region').T.to_dict('list')

我需要的是这个:

{'NYC: [2344, 3243, 3253, 2345 ], 'CHI': [8756, 9786, 7674, 6678], 'ATL': [1234] }

但我得到的是:

{'NYC: [2345 ], 'CHI': [6678], 'ATL': [1234] }

我试过了:

    num_dict = {}
    for region, num in df:
        num_dict.setdefault(region, []).append(num)

但这给了我一个(ValueError: too many values to unpack (expected 2)

有没有更好的方法来做到这一点?

提前致谢!

【问题讨论】:

    标签: python pandas dictionary


    【解决方案1】:

    使用groupby.apply(list),然后使用.to_dict

    df.groupby('region')['Num'].apply(list).to_dict()
    

    [出]

    {'ATL': [1234],
     'CHI': [8756, 9786, 7674, 6678],
     'NYC': [2344, 3243, 3253, 2345]}
    

    【讨论】:

    • 完美。谢谢!
    猜你喜欢
    • 2015-09-27
    • 2021-06-30
    • 1970-01-01
    • 2014-10-28
    • 2020-11-08
    • 1970-01-01
    • 1970-01-01
    • 2019-11-29
    相关资源
    最近更新 更多