通过正则表达式或模糊匹配合并 Dataframe

Merge Dataframe by regular expression or fuzzy match

我有 d1 和 d2,我想按 ID 列合并两者。 但是,ID 和 ID2 并不完全匹配。相反,ID是ID2的前8位(有时可以是前6位,有时可以相差一位或两位)。

我知道我可以预处理 ID2 以仅保留前 8 位数字。但是,我不能应付所有的情况。

请问有没有更高级的方式通过正则表达式合并进行模糊匹配?比如说,如果前6位数字匹配,那么合并?

d1=pd.DataFrame({'ID':['00846U10','01381710'],
                      'count':[100,200]})
d2=pd.DataFrame({'ID2':['00846U101','013817101','02376R102'],
                'value':[1,5,6]})

伙计,

我遇到了同样的问题,唯一的解决办法是使用其他 python 包。例如,看看 fuzzywuzzy。很好。

一般的想法是,对于 d1 中的每一行,您将在 d2 中寻找具有最高模糊匹配分数的行。