Python 熊猫使用其他两个查找数据帧中的值提取一个数据帧中的数据

Python 熊猫使用其他两个查找数据帧中的值提取一个数据帧中的数据,python,pandas,Python,Pandas,我有一个Dataframe列,其中有一些字符串存储来自其他两个Dataframe的值,如下所示: df的示例视图,其列col具有以下字符串 col Highest Sales was for Mobile Scott Lowest Returns was for Mobile Phone Steve Low Returns was for Paul 我试图从上述数据框中提取值,以便创建一个新列,其中包含产品名称(从prod\u df获取)和代表名称(从sales\u rep\u df获取) 数

我有一个Dataframe列,其中有一些字符串存储来自其他两个Dataframe的值,如下所示:

df的示例视图,其列
col
具有以下字符串

col
Highest Sales was for Mobile Scott
Lowest Returns was for Mobile Phone Steve
Low Returns was for Paul
我试图从上述数据框中提取值,以便创建一个新列,其中包含产品名称(从
prod\u df
获取)和代表名称(从
sales\u rep\u df
获取)

数据帧中的数据

prod_df
Laptop
Computer
Mobile
Mobile Phone
sales_rep_df
Scott
Steve
Paul
数据框中的数据

prod_df
Laptop
Computer
Mobile
Mobile Phone
sales_rep_df
Scott
Steve
Paul
预期产量

col, prod, rep
Highest Sales was for Mobile Scott, Mobile
Lowest Returns was for Mobile Phone Steve, Mobile Phone, Steve
Low Returns was for Paul,,Paul
我相信您需要从列表中获取第一个匹配值:

pat1 = '|'.join(r"\b{}\b".format(x) for x in prod_df['col'])
pat2 = '|'.join(r"\b{}\b".format(x) for x in sales_rep_df['col'])
df['prod'] = df['col'].str.extract('('+ pat1 + ')', expand=False)
df['rep'] = df['col'].str.extract('('+ pat2 + ')', expand=False)
或在所有匹配项中使用:

df['prod'] = df['col'].str.findall(pat1).str.join(',')
df['rep'] = df['col'].str.findall(pat2).str.join(',')