1

2 つのデータ フレームの会社名間でマッチング (一種のファジー マッチング) を実行しています。そうするために、最初に、最初のアルファベットが一致するすべての会社名の間で完全なマージを実行しています。これは、「A」で始まるすべての企業が、他のデータ フレームの「A」で始まるすべての企業と一致することを意味します。これは次のように行われます。

df1['df1_Start'] = df1['company1'].astype(str).str.slice(0,2) 
df2['df2_Start'] = df2['company2'].astype(str).str.slice(0,2)
Merge = pd.merge(df1,df2, left_on='df1_Start',right_on='df2_Start')

ここで、df1 の会社に df2 の会社が含まれる FullMerge のすべての行を取得したいと考えています。これは、df1 の会社の名前が長いためです。

Merge1=Merge[Merge['company1'].str.contains(Merge['company2'].str)]

これは私にはうまくいきません。このタスクを実行するにはどうすればよいですか? また、会社名を一致させるために使用できる他の方法を提案してください. 企業は 2 つのデータ フレームで同じである可能性がありますが、まったく同じ方法で記述されているわけではないためです。

4

1 に答える 1

1

forで(またはregexで)区切られたすべての値を生成|するために必要だと思います:join|str.contains

Merge1=Merge[FullMerge['company1'].str.contains("|".join(Merge['company2'].tolist())]
于 2016-10-18T18:22:02.953 に答える