Я думаю, что библиотека Recordlinkage подойдет для ваших целей
вы можете использовать для объекта сравнения, требуя различные виды совпадений:
compare_cl.exact('CustomerName', 'CustomerName', label='CustomerName')
compare_cl.string('StoreName', 'StoreName', method='jarowinkler', threshold=0.85, label='surname')
compare_cl.string('Address', 'Address', threshold=0.85, label='Address')
, затем, определив соответствие, вы можете настроить, как вы хотите, чтобы результаты, т.е. если вы хотите, чтобы 2 функции были сопоставлены по крайней мере
features = compare_cl.compute(pairs, df)
matches = features[features.sum(axis=1) > 3]