Ich habe derzeit einen Datensatz, der Fuzzy-Logik verbunden werden muss. Dataframe df1 ist die kleinere Referenztabelle mit etwa 10 Beobachtungen. Dataframe df2 ist mein Hauptdatenrahmen mit ungefähr 2000 Beobachtungen, bei denen der Fuzzy-Logic-Join durchgeführt werden muss. Ich präsentiere das Beispiel und meinen Versuch unten.Python Pandas Fuzzy Logik
import difflib
df1 = pd.DataFrame({'number':[1,2,3,4,5],'not_shifted':['one','two','three','four','five']})
df2 = pd.DataFrame({'values':[['test'],['a'],['b'],['c'],['d'],['e'],['f'],['f'],['f']],'not_shifted':[np.nan,'one','too','three','fours','five','six',np.nan,'one']})
# my approach
df2['not_shifted'] = df2['not_shifted'].map(lambda x: difflib.get_close_matches(x, df1['not_shifted'])[0])
ich die folgende Fehlermeldung erhalten: Liste außerhalb des zulässigen Bereichs
TypeError: 'float' object is not utterable
Wenn ich die np.nan mit etwas anderes ersetzen, erhalte ich einen anderen Fehler:
List out of range
Hallo Serenity, vielen Dank für die schnelle Antwort und Lösung :) – Seb
Hallo Serenity, Wie kann ich von den eckigen Klammern in dem Datenrahmen loszuwerden. Die Antwort ist richtig, jedoch verursachen die eckigen Klammern in der Lösung ein wenig Verwirrung. Was ist der Zweck, eine Liste in diesem Datenrahmen zu definieren? Vielen Dank. – Seb