1

我正在两个数据框的公司名称之间执行匹配(一种模糊匹配)。为此,首先我在所有公司名称之间执行完全合并,其中起始字母匹配。这意味着所有以“A”开头的公司都将与其他数据框中以“A”开头的所有公司匹配。这是按如下方式完成的:

df1['df1_Start'] = df1['company1'].astype(str).str.slice(0,2) 
df2['df2_Start'] = df2['company2'].astype(str).str.slice(0,2)
Merge = pd.merge(df1,df2, left_on='df1_Start',right_on='df2_Start')

现在我想拥有来自 FullMerge 的所有行,其中 df1 中的公司包含 df2 中的公司。这是因为 df1 中的公司名称已拉长。

Merge1=Merge[Merge['company1'].str.contains(Merge['company2'].str)]

这对我不起作用。如何执行此任务?另外,请建议我可以使用哪些其他方式来匹配公司名称。因为公司可能在两个数据框中是相同的,但不是以完全相同的方式编写的。

4

1 回答 1

1

我认为您需要|withjoin生成由|(或在正则表达式中)分隔的所有值str.contains

Merge1=Merge[FullMerge['company1'].str.contains("|".join(Merge['company2'].tolist())]
于 2016-10-18T18:22:02.953 回答