首页 > 解决方案 > 如何计算数据框中特定单词的实例?

问题描述

我想计算这些 ngram 出现在充满文章的数据框列 (df.content) 中的次数。我的数据框是这样的:

在此处输入图像描述

我的 ngram 列表是这样的:

在此处输入图像描述

df_ngrams 中的“值”列显示了特定 ngram 在 df.content 中出现的次数,但我想计算每篇文章

我已经尝试过这个:

ngrams_count = ['u s', 'president trump', 'donald trump', 'united states', 'white house', 'new york', 'hillary clinton', 'fox news', 'donald trumps', 'president donald']
count = 0
articleCount = 0

for i in df.content:
    articleCount += 1
    for j in ngrams_count:
        if j in i:
            count = i.find(j)
        print ("article ", articleCount, "has ", count, " instances of ngram ", j)
        counts = 0

标签: pythonpandas

解决方案


试试这个:

df["content"].apply(lambda x: pd.Series({el: x.count(el) for el in ngrams_count})).sum()

样本输出:

>>> lst
['dfo', 'a', 'd0', 'do']
>>> df
   idx                               cnt
0    1    a fero eo dk v,e oe pero c, el
1    2          fdo pr ck ,,w ld. dp dfp
2    3      40fk ldf mdl sdm dfl mfd dfl
3    4     dov övdke dmc kfdoe flgp dofr
4    5             fdk0v do fdok dlw pds
5    6               dfo df0 ld cödp wpl
6    7              fdo d0 dl dfl dflre
7    8           dfo dfp 0er a na bab sb
8    9           fdo 0fd ldm cd. wdld so
9   10  reo dodf fd0fd dlss0 d0dsl sdl s
>>> df["cnt"].apply(lambda x: pd.Series({el: x.count(el) for el in lst})).sum()
dfo    2
a      4
d0     3
do     9
dtype: int64

推荐阅读