python - Pandas - 使用 groupby 创建最常用词的元组
问题描述
我有一个带有列的数据框:语言和单词
df:
Parts of speech word
0 Noun cat
1 Noun water
2 Noun cat
3 verb draw
4 verb draw
5 adj slow
我想按词性对热门单词进行分组(我的期望):
Parts of speech top
Noun {'cat':2,'water':1}
verb {'draw':2}
adj {'slow':1}
我使用 groupby 方法并应用它,但我没有得到我需要的东西
df2=df.groupby('Parts of speech')['word'].apply(lambda x : x.value_counts())
如何为每个词性创建一个元组?
解决方案
一种方法是使用.agg
+聚合collections.Counter
:
from collections import Counter
df2=df.groupby('Parts of speech')['word'].agg(Counter)
print(df2)
输出
Parts of speech
Noun {'cat': 2, 'water': 1}
adj {'slow': 1}
verb {'draw': 2}
Name: word, dtype: object
替代使用value_counts
(注意最后的 to_dict 调用):
df2 = df.groupby('Parts of speech')['word'].agg(lambda x: x.value_counts().to_dict())
推荐阅读
- ios - 带有默认地图视图引脚的 Swift Mapview 自定义调出视图
- mysql - 如何在数据库初始化完成后停止填充卷的 MySQL docker 容器?
- javascript - Api fetch - 无法读取未定义的属性“json”
- sql - SQLite 如何水平堆叠组?
- git - git - 如何为 git prune 创建一个无法访问的提交?
- python - 查找最近的素数python
- google-analytics - 如何在 Google Analytics Enhanced Ecommerce 中转义撇号
- bash - 为什么在排序后选择唯一出现的结果与仅选择唯一出现的结果不同?
- javascript - 切换到 https 后,什么会阻止表单/ API 调用?
- python - 使用字符串创建类函数