Слияние Dataframe по регулярному выражению или нечеткому совпадению

У меня есть d1 и d2, и я хочу объединить их по столбцу ID. Однако ID и ID2 точно не совпадают. Вместо этого ID — это первые 8 цифр ID2 (иногда это могут быть первые 6 цифр, а иногда они могут отличаться на одну или две цифры).

Я понимаю, что я могу предварительно обработать ID2, чтобы сохранить только первые 8 цифр. Однако я не могу справиться со всеми ситуациями.

Интересно, есть ли расширенный способ слияния через регулярное выражение для нечеткого совпадения? скажем, если первые 6 цифр совпали, то объединить?

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

person Lisa    schedule 03.08.2016    source источник
comment
предварительно обработайте идентификатор и ID2, чтобы сохранить только 6 символов, это не сработает!   -  person Gaurav Dhama    schedule 03.08.2016
comment
@GauravDhama не справится со всеми моими ситуациями. обновил вопрос   -  person Lisa    schedule 03.08.2016
comment
Итак, вы хотите нарезать как ID, так и ID2, чтобы они содержали 6 цифр, и, если есть совпадение, затем объединить два кадра данных?   -  person Nickil Maveli    schedule 03.08.2016


Ответы (1)


чувак,

У меня была такая же проблема, и единственным решением является использование других пакетов Python. Взгляните, например, на fuzzywuzzy. Это очень хорошо.

Общая идея состоит в том, что для каждой строки в d1 вы будете искать строку в d2, которая имеет наивысший показатель нечеткого соответствия.

person ℕʘʘḆḽḘ    schedule 03.08.2016
comment
Спасибо @Noobie, не могли бы вы опубликовать пример кода? - person Lisa; 03.08.2016
comment
обязательно посмотрите здесь stackoverflow.com/questions/37979167/. если вы удовлетворены, вы можете принять. Спасибо! - person ℕʘʘḆḽḘ; 03.08.2016