【发布时间】:2016-05-24 16:26:06
【问题描述】:
给定数据集 1
name,x,y
st. peter,1,2
big university portland,3,4
和数据集 2
name,x,y
saint peter3,4
uni portland,5,6
目标是合并
d1.merge(d2, on="name", how="left")
虽然名称没有完全匹配。所以我正在寻找一种模糊匹配。在这种情况下,技术并不重要,更重要的是如何将其有效地整合到 pandas 中。
例如,st. peter 可能与另一个中的 saint peter 匹配,但 big university portland 可能偏差太大,我们不会将其与 uni portland 匹配。
一种考虑方法是允许以最低的 Levenshtein 距离加入,但前提是它低于 5 次编辑(st. --> saint 为 4)。
生成的数据框应仅包含 st. peter 行,并包含“名称”变体以及 x 和 y 变量。
有没有办法使用 pandas 进行这种合并?
【问题讨论】:
-
我认为您可以创建新列
df1['new']和df2['new']您的自定义函数,然后通过此列合并它们,例如d1.merge(d2, on="new", how="left") -
该功能只是决定哪个是最佳匹配,并决定是否存在匹配。考虑后面添加的 Levenhstein 距离示例。
标签: python pandas merge fuzzy-comparison