Ich habe zwei Datenrahmen. Eins enthält 33765 Unternehmen. Eine andere enthält 358839 Unternehmen. Ich möchte die Übereinstimmung zwischen den beiden mit Fuzzy-Match finden. Da die Anzahl der Datensätze zu hoch ist, versuche ich, die Datensätze beider Datenrahmen nach dem ersten Buchstaben des Firmennamens zu gliedern. Zum Beispiel: Für alle Unternehmen, die mit dem Buchstaben "A" beginnen, hat der erste Datenrahmen 2600 Datensätze und der zweite 25000 Datensätze. Ich implementiere vollständige Zusammenführung zwischen ihnen und dann Fuzzy-Match anwenden, um alle Unternehmen mit Fuzz Wert mehr als 95 zu bekommen. Dies funktioniert immer noch nicht, weil die Anzahl der Datensätze immer noch zu hoch, um vollständige Zusammenführung zwischen ihnen durchzuführen und dann implementieren Fuzzy. Kernel stirbt jedes Mal, wenn ich diese Operationen mache. Derselbe Ansatz funktionierte gut, wenn die Anzahl der Datensätze in beiden Frames 4-stellig war. Außerdem, schlagen Sie vor, es gibt eine Möglichkeit, dies für alle Buchstaben 'A' bis 'Z' zu automatisieren, anstatt den Code für jeden Buchstaben manuell zu starten (ohne Kernel-Würfel zu machen).Fuzzy-Match zwischen einer großen Anzahl von Datensätzen
Hier ist mein Code:
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]
Warum stirbt Ihr Kernel? Wie viel RAM hast du, hast du keinen RAM mehr? Können Sie die Ausgabe von 'df1.info (verbose = True, memory_usage = True)' und 'df1.info (verbose = True, memory_usage = True)' in Ihre Frage aufnehmen? – Kartik
Ich weiß nicht warum, aber das zeigt keine Ausgabe an. – ComplexData