Самый быстрый способ посчитать вхождение слов в пандах - PullRequest
1 голос
/ 25 октября 2019

У меня есть список строк. Я хочу посчитать вхождение всех слов в каждой строке столбца Pandas и добавить новый столбец с этим счетом.

words = ["I", "want", "please"]
data = pd.DataFrame({"col" : ["I want to find", "the fastest way", "to 
                              count occurrence", "of words in a column", "Can you help please"]})
data["Count"] = data.col.str.count("|".join(words))
print(data)

Код, показанный здесь, делает именно то, что я хочу, но это занимает много временивремя бегать за длинным текстом и длинным списком слов. Можете ли вы предложить более быстрый способ сделать то же самое?

Спасибо

1 Ответ

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

Возможно, вы можете использовать Counter. Если у вас есть несколько наборов words для проверки одного и того же текста, просто сохраните промежуточный шаг после применения Counter. Поскольку эти подсчитанные слова теперь находятся в словаре с ключевыми словами, это операция O (1), чтобы проверить, содержит ли этот словарь данное слово.

from collections import Counter

data["Count"] = (
    data['col'].str.split()
    .apply(Counter)
    .apply(lambda counts: sum(word in counts for word in words))
)
>>> data
                    col  Count
0        I want to find      2
1       the fastest way      0
2   to count occurrence      0
3  of words in a column      0
4   Can you help please      1
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...