Как считать экземпляры определенных слов в кадре данных? - PullRequest
0 голосов
/ 12 октября 2019

Я хочу посчитать, сколько раз эти нграммы появляются в столбце данных (df.content), заполненном статьями. Мой фрейм данных такой:

enter image description here

и мой список нграмм такой:

enter image description here

Столбец 'value' в 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

Ответы [ 2 ]

2 голосов
/ 12 октября 2019

Попробуйте:

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
0 голосов
/ 13 октября 2019

Не пытаясь предложить другой подход и используя ваш подход, вот что вам нужно. Вам нужно посчитать количество вхождений n_gram, а не просто найти его. find () просто дает вам индекс, где он найден, и возвращает -1, если текст не может быть найден (это не то, что вы хотите):

for i in df.content:
    articleCount += 1
    for j in ngrams_count:
        count = i.count(j)
        print ("article ", articleCount, "has ", count, " instances of ngram ", j)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...