Частичное совпадение ключевых слов не работает, когда я пытаюсь создать новый столбец из фрейма данных pandas в python? - PullRequest
6 голосов
/ 09 марта 2020

У меня есть описание фрейма данных, как указано ниже

  Description

Я пытаюсь выполнить поиск по ключевому слову в столбце описания, и у меня есть список ключевых слов в виде списка.

Мой текущий код проверяет только точные совпадения, а не частичные совпадения. Если в строке присутствует несколько ключевых слов, они будут разделены разделителем и заполненным новым столбцом.

Мой код

data=pd.read_excel('path_to_datafile.xlsx')
keywords=['dinner','government','Agents','entertainment','Agent']
keywords_lower = [item.lower() for item in keywords]
s=set(keywords_lower)
data['Keyword'] = data['Description'].apply(lambda x: '/'.join(set(x.lower().split()).intersection(s)))

Как можно это будет сделано?

1 Ответ

0 голосов
/ 09 марта 2020

extractall выполнит эту работу, но вы должны сначала построить шаблон:

...
keywords_lower = [item.lower() for item in keywords]
pattern = '(' + '|'.join('(?:' + i + ')' for i in keywords_lower) + ')'
df['Keyword'] = df['Description'].str.extractall(pattern, re.I).groupby(level=0).agg('/'.join)

Вы получите:

                       Description           Keyword
0  Government entertainment people  Govern/entertain
1                  Dinner with CFO            Dinner
2  Commission to Agents government      Agent/govern

(pattern здесь '((?:dinner)|(?:govern)|(?:agent)|(?:entertain))' )

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...