Я сопоставляю определенные ключевые слова с текстовыми данными, используя applymap в Python. Допустим, я хочу проверить, как часто ключевое слово «привет» совпадает с текстовыми данными во всех строках. Applymap дает мне желаемый матричный результат, но только «Истина» или «Ложь» вместо количества появлений.
Я попытался связать count() с моей функцией applymap, но не смог заставить ее работать.
Минимальный рабочий пример выглядит следующим образом:
import pandas as pd
import numpy as np
df = pd.DataFrame({'text': ['hello hello', 'yes no hello', 'good morning']})
keys = ['hello']
keyword = pd.DataFrame({0:keys})
res = []
for a in df['text']:
res.append(keyword.applymap(lambda x: x in a))
map = pd.concat(res, axis=1).T
map.index = np.arange(len(map))
#Output
map
0
0 True
1 True
2 False
#Desired Output with 'hello' appearing twice in the first row, once in the second and zero in the third of df.
0
0 2
1 1
2 0
Я ищу способ сохранить мою функцию applymap для получения матричной формы, но заменить True (1) и False (0) на количество появлений, например желаемый результат, показанный выше.
Для подсчета определенных элементов вы можете использовать процедуру гистограммы. См.: pandas.pydata.org/pandas-docs/stable/reference/api/…
Возможно, вы захотите принять во внимание, что map
— это встроенное имя для python. В вашем скрипте вы в основном перезаписываете его встроенную функцию. Вместо этого предпочтительно использовать результат.
Вместо проверки элемента в списке:
res.append(keyword.applymap(lambda x: x in a))
# х == а
Вы должны использовать:
res.append(keyword.applymap(lambda x: str.count(a, x)))
# подсчет появления "a"
Добро пожаловать в StackOverflow. Пожалуйста, найдите время, чтобы прочитать этот пост на как предоставить отличный пример панд, а также как предоставить минимальный, полный и проверяемый пример и соответствующим образом изменить свой вопрос. Эти советы по как задать хороший вопрос также могут быть полезны.