在另一个字典中嵌套一个计数器,其中键是数据框列

Posted

技术标签:

【中文标题】在另一个字典中嵌套一个计数器,其中键是数据框列【英文标题】:Nesting a counter within another dictionary where keys are dataframe columns 【发布时间】:2020-01-01 17:22:41 【问题描述】:

我有一个 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 为键的字典中?

【问题讨论】:

【参考方案1】:

将字典理解与DataFrame.groupbySeries.value_countsSeries.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']

【讨论】:

完美运行。谢谢!将来会大量使用 groupby 和 value_counts 看来我的问题更复杂了,我不知道如何处理——需要另一层嵌套。我可以通过编辑我原来的问题来请求您的帮助,还是我应该提出一个新问题? @user3058703 - 我认为最好的新版本。 ***.com/questions/57694178/…

以上是关于在另一个字典中嵌套一个计数器,其中键是数据框列的主要内容,如果未能解决你的问题,请参考以下文章

如何绘制条形图,显示由数据框列组成的各种桶的频率计数?

嵌套字典:按日期分组,然后按枚举值分组并汇总计数

以独特的方式展平包含嵌套字典的列表的数据框列

如何将列名与字典键匹配并向计数器添加值

字典列操作计数器

如何从网站中提取数据计数器以在另一个 HTML 项目中用作 JS 变量