Saya mencoba menggabungkan dua bingkai data panda menggunakan dua kolom:
new_df = pd.merge(A_df, B_df, how='left', left_on='[A_c1,c2]', right_on = '[B_c1,c2]')
tetapi mendapat kesalahan berikut:
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]'
Adakah yang tahu cara yang tepat untuk melakukan ini? Terima kasih!
python
python-3.x
pandas
join
sejenis kacang-kacangan dari Jepang
sumber
sumber
left_on
danright_on
harus berupa daftar string, bukan string yang terlihat seperti daftar.Jawaban:
Coba ini
https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.DataFrame.merge.html
sumber
left_on
danright_on
samaa
danb
, bisakah kita menggunakanon = ['a', 'b']
?masalahnya di sini adalah bahwa dengan menggunakan tanda kutip Anda mengatur nilai yang diteruskan menjadi string, padahal, seperti yang dikatakan @Shijo dari dokumentasi, fungsi tersebut mengharapkan label atau daftar, tetapi bukan string! Jika daftar berisi masing-masing nama kolom yang dilewati untuk kerangka data kiri dan kanan, maka masing-masing nama kolom harus secara individual berada dalam apostrof. Dengan apa yang telah dinyatakan, kita dapat memahami mengapa ini tidak benar:
Dan ini adalah cara yang benar untuk menggunakan fungsi ini:
sumber
Cara lain untuk melakukan ini:
new_df = A_df.merge(B_df, left_on=['A_c1','c2'], right_on = ['B_c1','c2'], how='left')
sumber