私は2つのデータフレームを持っています。 1つに33765社が含まれています。もう1つは358839社です。私はファジーマッチを使って2つのマッチングを見つけたい。レコード数が多すぎるため、会社名の1文字目に基づいて両方のデータフレームのレコードを細分化しようとしています。 例:文字「A」で始まるすべての企業では、1番目のデータフレームには2600レコード、2番目には25000レコードがあります。私はそれらの間で完全なマージを実装して、ファジー値を持つすべての企業に95を超えるファジーマッチを適用しています。 レコードの数がそれでも完全にマージしてからファジーを実装するには高すぎるため、これはまだ機能しません。これらの操作を行うたびにカーネルが死ぬ。両方のフレームのレコード数が4桁の場合、同じアプローチがうまくいきました。 また、各文字のコードを手動で実行するのではなく(カーネルの死ぬことなく)、すべての文字 'A'〜 'Z'を自動化する方法があるかどうかをお勧めします。多数のレコード間のファジーマッチ
c='A'
df1 = df1[df1.companyName.str[0] == c ].copy()
df2 = df2[df2.companyName.str[0] == c].copy()
df1['Join'] =1
df2['Join'] =1
df3 = pd.merge(df1,df2, left_on='Join',right_on='Join')
df3['Fuzz'] = df3.apply(lambda x: fuzz.ratio(x['companyName_x'], x['companyName_y']) , axis=1)
df3.sort_values(['companyName_x','Fuzz'],ascending=False, inplace=True)
df4 = df3.groupby('companyName_x',as_index=False).first()
df5=df4[df4.Fuzz>=95]
カーネルはなぜ死ぬのですか?どのくらいのRAMがありますか、RAMが不足していますか?あなたの質問に 'df1.info(verbose = True、memory_usage = True)と' df1.info(verbose = True、memory_usage = True)の出力を含めることができますか? – Kartik
理由はわかりませんが、これは出力を表示しません。 – ComplexData