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)
を使用してそれらを並べて接合されています。私の次の目標はモジュールからのいくつかの異なる一致するコマンドを使用してdf2['FDA Company']
の下の各文字列にdf1['Company']
の下の各文字列を比較し、最高の一致とその名前の値を返します。私は新しい列にそれを保存したい。私はdf2['FDA Company']
にdf1['Company']
にLACKY SHEET METAL
上fuzz.ratio
とfuzz.token_sort_ratio
をした場合例えば、それは最高の試合は100
のスコアでLACKY SHEET METAL
だったし、これはその後、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)
をやってみました。しかし、列の長さが異なっているため、エラーを得たように見える結果。
私は困惑しています。どのように私はこれを達成することができますか?
の各行に最も近いマッチを入手!しかし、大きなファイル(〜lakhs)では、私はメモリエラーを取得 – user1930402