根据字符串匹配合并两个数据集

merge two datasets based on a string match

我有两个数据集;

DF1 包含一个包含短词的列。

DF2 有一列包含一系列单词,在某些情况下它们以 DF1 中的短单词开头

我想在 DF2 中创建一个新列,每次 DF1 单词出现在 DF2 单词的开头,然后将该 DF1 单词放入新创建的列中的那个位置。

想法是一旦完成,我就可以使用匹配的词合并两个数据集。

我该怎么做?

DF1

ref
ABC
DEF
GHI

DF2

word
ABC123
DEF456
GHI789

DF2 - 期望的输出

word new column
ABC123 ABC
DEF456 DEF
GHI789 GHI

您可以从 ref 列创建模式列表,然后尝试从 word 列提取它:

import re

pattern = fr"({'|'.join(re.escape(x) for x in df1['ref'])})"
df2['new column'] = df2['word'].str.extract(pattern)
print(df2)

# Output
     word new column
0  ABC123        ABC
1  DEF456        DEF
2  GHI789        GHI

如果太简单,就得用fuzzy逻辑。你可以检查这个 &