当我尝试从 python 中的 pandas 数据框创建新列时,部分关键字匹配不起作用?

Partial keyword match not working when I am trying to create a new column from a pandas data frame in python?

我有一个数据框描述如下

  Description

我正在尝试在描述栏上进行关键字搜索,并且我有关键字列表作为列表。

我当前的代码只检查完全匹配而不是部分匹配matches.If行中存在多个关键字,这些关键字将由分隔符分隔并填充新列。

我的代码

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)))

如何做到这一点?

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))')