12

それぞれ異なる行数を持つ 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 wuzzyfuzz.ratiofuzz.token_sort_ratioLACKY SHEET METALdf1['Company']df2['FDA Company']LACKY SHEET METAL100combined 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) 

しかし、列の長さが異なるため、エラーが発生しました。

私は困惑しています。どうすればこれを達成できますか?

4

1 に答える 1