Ich versuche, zwei Pandas-Datenrahmen mit zwei Spalten zu verbinden:
new_df = pd.merge(A_df, B_df, how='left', left_on='[A_c1,c2]', right_on = '[B_c1,c2]')
habe aber folgenden Fehler bekommen:
pandas/index.pyx in pandas.index.IndexEngine.get_loc (pandas/index.c:4164)()
pandas/index.pyx in pandas.index.IndexEngine.get_loc (pandas/index.c:4028)()
pandas/src/hashtable_class_helper.pxi in pandas.hashtable.PyObjectHashTable.get_item (pandas/hashtable.c:13166)()
pandas/src/hashtable_class_helper.pxi in pandas.hashtable.PyObjectHashTable.get_item (pandas/hashtable.c:13120)()
KeyError: '[B_1, c2]'
Irgendeine Idee, was der richtige Weg sein sollte, dies zu tun? Vielen Dank!
python
python-3.x
pandas
join
Edamame
quelle
quelle
left_on
undright_on
sollte eine Liste von Zeichenfolgen sein, keine Zeichenfolge, die wie eine Liste aussieht.Antworten:
Versuche dies
https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.DataFrame.merge.html
quelle
left_on
undright_on
sind gleicha
undb
können wir verwendenon = ['a', 'b']
?Das Problem hierbei ist, dass Sie mithilfe der Apostrophe den übergebenen Wert als Zeichenfolge festlegen, obwohl die Funktion, wie in der Dokumentation angegeben, eine Bezeichnung oder Liste erwartet, jedoch keine Zeichenfolge! Wenn die Liste jeden Namen der Spalten enthält, die sowohl für den linken als auch für den rechten Datenrahmen übergeben wurden, muss sich jeder Spaltenname einzeln in Apostrophen befinden. Mit dem, was gesagt wurde, können wir verstehen, warum dies falsch ist:
Und das ist die richtige Art, die Funktion zu nutzen:
quelle
Ein anderer Weg, dies zu tun:
new_df = A_df.merge(B_df, left_on=['A_c1','c2'], right_on = ['B_c1','c2'], how='left')
quelle