Misalkan saya memiliki dua DataFrames seperti itu:
left = pd.DataFrame({'key1': ['foo', 'bar'], 'lval': [1, 2]})
right = pd.DataFrame({'key2': ['foo', 'bar'], 'rval': [4, 5]})
Saya ingin menggabungkan mereka, jadi saya mencoba sesuatu seperti ini:
pd.merge(left, right, left_on='key1', right_on='key2')
Dan saya senang
key1 lval key2 rval
0 foo 1 foo 4
1 bar 2 bar 5
Tapi saya mencoba menggunakan metode join, yang saya percaya sangat mirip.
left.join(right, on=['key1', 'key2'])
Dan saya mendapatkan ini:
//anaconda/lib/python2.7/site-packages/pandas/tools/merge.pyc in _validate_specification(self)
406 if self.right_index:
407 if not ((len(self.left_on) == self.right.index.nlevels)):
--> 408 raise AssertionError()
409 self.right_on = [None] * n
410 elif self.right_on is not None:
AssertionError:
Apa yang saya lewatkan?
onopsi) terhadap otherindeks. Ingat, indeks untuk bergabung. Sedangkan merge () adalah metode yang lebih umum.
mergebergabung dengan kolomleftke kolomright, yang adalah apa yang Anda inginkan, tetapijoin(... on=[...])bergabung dengan kolomleftuntuk kunci indeksright, yang bukan yang Anda inginkan. Lihat jawaban saya di bawah ini untuk lebih jelasnya.