在另一个字典中嵌套一个计数器,其中键是数据框列
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.groupby
和Series.value_counts
与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']
【讨论】:
完美运行。谢谢!将来会大量使用 groupby 和 value_counts 看来我的问题更复杂了,我不知道如何处理——需要另一层嵌套。我可以通过编辑我原来的问题来请求您的帮助,还是我应该提出一个新问题? @user3058703 - 我认为最好的新版本。 ***.com/questions/57694178/…以上是关于在另一个字典中嵌套一个计数器,其中键是数据框列的主要内容,如果未能解决你的问题,请参考以下文章