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

时间:2016-08-03 20:03:45

标签: python regex pandas merge fuzzy

我有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]})

1 个答案:

答案 0 :(得分:3)

哥们,

我遇到了同样的问题,唯一的解决方案是使用其他python包。例如,请查看fuzzywuzzy。非常好。

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