熊猫数据帧中的子字符串匹配

时间:2020-04-13 12:47:03

标签: python regex pandas substring match

我有两个要匹配的大熊猫数据帧,其中包括彼此相对相似的两列,我们将它们称为nameaddress。但是,两个数据框中的name列并不总是包含全名。我想搜索每个名称列的子字符串,并返回潜在匹配项的列表。

我以前查看过此Stack Overflow帖子,推荐使用熊猫str.extractinsert方法。我的代码看起来像

pat = "|".join(left_df.name) 
right_df.insert(0,'name_substring',right_df.name.str.extract("(" + pat + ')', expand=False)

pat = "|".join(right_df.name) 
left_df.insert(0,'name_substring',left_df.name.str.extract("(" + pat + ')', expand=False)

left_within = left_df.merge(right_df, left_on=['name_substring','address'], right_on=['name', 'address'])
right_within = left_df.merge(right_df, right_on=['name_substring','address'], left_on=['name', 'address'])

merged_df = pd.concat([left_df, right_df], axis=0)

此方法产生了一些良好的结果,但是使用SAS find函数运行相同分析的同事能够产生更多潜在匹配。我最初的想法是,这种方法假定每个数据帧中的每个记录只能有一个潜在的匹配项,而str.extract方法仅搜索子字符串的第一个实例,而实际上可以有多个。

感谢您对获取我的python代码以获得更全面结果的建议。

0 个答案:

没有答案