それぞれ異なる行数を持つ 2 つのデータ フレームがあります。以下は、各データセットからのいくつかの行です
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
と
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
を使って並べて結合しましたcombined_data = pandas.concat([df1, df2], axis = 1)
。私の次の目標は、モジュールからいくつかの異なる一致するコマンドを使用してdf1['Company']
、下の各文字列を下の各文字列と比較し、最も一致する値とその名前を返すことです。それを新しい列に保存したい。たとえば、とを実行すると、最適な一致がのスコアであったことが返され、これが の新しい列に保存されます。結果は次のようになりますdf2['FDA Company']
fuzzy wuzzy
fuzz.ratio
fuzz.token_sort_ratio
LACKY SHEET METAL
df1['Company']
df2['FDA Company']
LACKY SHEET METAL
100
combined data
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
やってみた
combined_data['name_ratio'] = combined_data.apply(lambda x: fuzz.ratio(x['Company'], x['FDA Company']), axis = 1)
しかし、列の長さが異なるため、エラーが発生しました。
私は困惑しています。どうすればこれを達成できますか?