Pandas - 使用 groupby 创建最常用词的元组

Posted

技术标签:

【中文标题】Pandas - 使用 groupby 创建最常用词的元组【英文标题】:Pandas - create a tuple of the most frequent words using groupby 【发布时间】:2021-12-11 18:19:11 【问题描述】:

我有一个包含列的数据框:语言和单词

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())

如何为每个词性创建一个元组?

【问题讨论】:

【参考方案1】:

一种方法是使用.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())

【讨论】:

以上是关于Pandas - 使用 groupby 创建最常用词的元组的主要内容,如果未能解决你的问题,请参考以下文章

使用 apply() 函数在 pandas 中的 groupby 之后创建列表

python – Pandas使用groupby中的count来创建新列

pandas使用groupby函数基于指定分组变量对dataframe数据进行分组使用tail函数获取每个分组数据中每个分组的最后面N行样本

pandas使用groupby函数基于指定分组变量对dataframe数据进行分组使用head函数获取每个分组数据中每个分组的最前面N行样本

Pandas 在 groupby 和 nlargest 之后创建额外(重复)索引

如何使用子图创建 Pandas groupby 图