Aplique a correspondência difusa em uma coluna do quadro de dados e salve os resultados em uma nova coluna
Eu tenho dois quadros de dados, cada um com um número diferente de linhas. Abaixo estão algumas linhas de cada conjunto de dados
df1 =
Company City State ZIP
FREDDIE LEES AMERICAN GOURMET SAUCE St. Louis MO 63101
CITYARCHRIVER 2015 FOUNDATION St. Louis MO 63102
GLAXOSMITHKLINE CONSUMER HEALTHCARE St. Louis MO 63102
LACKEY SHEET METAL St. Louis MO 63102
e
df2 =
FDA Company FDA City FDA State FDA ZIP
LACKEY SHEET METAL St. Louis MO 63102
PRIMUS STERILIZER COMPANY LLC Great Bend KS 67530
HELGET GAS PRODUCTS INC Omaha NE 68127
ORTHOQUEST LLC La Vista NE 68128
Eu os juntei lado a lado usandocombined_data = pandas.concat([df1, df2], axis = 1)
. Meu próximo objetivo é comparar cada string emdf1['Company']
para cada string emdf2['FDA Company']
usando vários comandos correspondentes diferentesfuzzy wuzzy
módulo e retorne o valor da melhor correspondência e seu nome. Eu quero armazenar isso em uma nova coluna. Por exemplo, se eu fiz ofuzz.ratio
efuzz.token_sort_ratio
emLACKY SHEET METAL
nodf1['Company']
paradf2['FDA Company']
retornaria que a melhor correspondência foiLACKY SHEET METAL
com uma pontuação de100
e isso seria salvo em uma nova coluna emcombined data
. Os resultados pareceriam
combined_data =
Company City State ZIP FDA Company FDA City FDA State FDA ZIP fuzzy.token_sort_ratio match fuzzy.ratio match
FREDDIE LEES AMERICAN GOURMET SAUCE St. Louis MO 63101 LACKEY SHEET METAL St. Louis MO 63102 LACKEY SHEET METAL 100 LACKEY SHEET METAL 100
CITYARCHRIVER 2015 FOUNDATION St. Louis MO 63102 PRIMUS STERILIZER COMPANY LLC Great Bend KS 67530
GLAXOSMITHKLINE CONSUMER HEALTHCARE St. Louis MO 63102 HELGET GAS PRODUCTS INC Omaha NE 68127
LACKEY SHEET METAL St. Louis MO 63102 ORTHOQUEST LLC La Vista NE 68128
Eu tentei fazer
combined_data['name_ratio'] = combined_data.apply(lambda x: fuzz.ratio(x['Company'], x['FDA Company']), axis = 1)
Mas ocorreu um erro porque os comprimentos das colunas são diferentes.
Estou perplexo. Como eu posso conseguir isso?