假設我有兩個DataFrames像這樣:Pandas的加入和合並有什麼區別?
left = pd.DataFrame({'key1': ['foo', 'bar'], 'lval': [1, 2]})
right = pd.DataFrame({'key2': ['foo', 'bar'], 'rval': [4, 5]})
我想將它們合併,所以我嘗試這樣:
pd.merge(left, right, left_on='key1', right_on='key2')
我很高興
key1 lval key2 rval
0 foo 1 foo 4
1 bar 2 bar 5
但我試圖使用連接方法,我一直認爲它非常相似。
left.join(right, on=['key1', 'key2'])
而且我得到這個:
//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:
我缺少什麼?
這裏的具體問題是,'merge'加入的'left'到列列' right',這是你想要的,但是'join(... on = [...])'將'left'的列連接到'right'的索引鍵,這不是你想要的。有關更多詳情,請參閱下面的答案。 –