首页 > 解决方案 > 在另一个字典中嵌套一个计数器,其中键是数据框列

问题描述

我有一个 Pandas 数据框,格式如下:

    ID      Code
    E1023   a
    E1023   b
    E1023   b
    E1023   b
    E1024   b
    E1024   c
    E1024   c

我想创建一个以 ID 列作为键的字典,其中包含来自 Code 列的值及其嵌套在其中的特定 ID 的计数,例如:

{'E1023' : {'a' : 1, 'b' : 3 } , {'E1024' : {'b' : 1, 'c' : 2}}} 

我知道我可以在 Code 列上使用 Counter ,但我该如何做到这一点,使其按 ID 分组,然后嵌套在 ID 为键的字典中?

标签: python-3.xpandasdictionary

解决方案


使用字典理解 withDataFrame.groupbySeries.value_countswith Series.to_dict

d = {k: v.value_counts().to_dict() for k, v in df.groupby('ID')['Code']}
print (d)
{'E1023': {'b': 3, 'a': 1}, 'E1024': {'c': 2, 'b': 1}}

或使用Counter然后转换为dict

from collections import Counter
d = {k: dict(Counter(v)) for k, v in df.groupby('ID')['Code']}

推荐阅读