我有两个数据框,df1['Keyword'] 和 df2['Description'] 我试图找到在列中找到的每个字符串实例在 df1['Keyword'] 中出现在 df2['Description'] 中,并返回 df2 中相邻列中匹配的字符串。
期望输出
df1['Keyword'] df2['Description'] df2['Match1'] df2['Match 2'] df3['Match 3']
apples apples are tasty apples
bananas apples and bananas are tasty apples bananas
oranges oranges, lemons, apples oranges lemons apples
lemons cucumber
(我在此处标记了匹配列,但它们可以命名为任何名称)。
我尝试过的:
df2['Match'] = df2['Description'].apply(lambda x: lookup(x, df1['Keyword']))
这让我完成了大部分工作,但它只提取了它在 df2['Description'] 中匹配的第一个关键字,并将其放置在一个名为 ['Match'] 的新列中,而我需要找到每一个匹配(最好是完全匹配)。
感谢您的帮助,刚开始学习。
答案 0 :(得分:1)
你可以这样做:
regex = r'|'.join(df1.Keyword)
df = pd.concat([df1, df2,
(pd.DataFrame(df2.Description
.str.findall(regex).to_list()))],
axis='columns').fillna('')
结果:
Keyword Description 0 1 2
0 apples apples are tasty apples
1 bananas apples and bananas are tasty apples bananas
2 oranges oranges, lemons, apples oranges lemons apples
3 lemons cucumber