根据列表中的匹配项创建列

Creating a column based on matches from a list

我有一个数据框,每行的同一字符串中有一列职位和公司名称,我还有一个所有可能的公司名称的列表。

如何搜索我的数据框的列以查看它是否包含我列表中的公司之一,然后在某些行中有匹配项时创建一个仅包含公司名称的新列?附上两张照片。

我尝试了几种解决方案,但找不到有效的解决方案。

我遵循的原始逻辑是; df['Company'] = df['Title'].str.contains(工作列表中的 x 为 x) 但显然这会引发错误。

感谢任何帮助,谢谢。

Series.str.contains| 的连接值用于正则表达式 or 用于测试值:

df['test'] = df['Title'].str.contains('|'.join(joblist))

如果想按列表提取值,请使用 Series.str.extract:

df['Company'] = df['Title'].str.extract(f'({"|".join(joblist)})', expand=False)

您需要访问包含公司的列表中的所有项目,并将它们与列 "Title" 的每个值进行比较。 您可以使用运算符 in.

检查一个字符串是否包含另一个字符串
all_titles = df['Title']
for x in all_titles:
    for y in df:
        if (y in x ):
            //your code here