數據集的合並或連接運算是通過一個或多個鍵將行鏈接起來的。這些運算是關系型數據庫的核心。pandas的merge函數是對數據應用這些算法的這樣切入點。
默認是交集, inner連接
列名不同可以分別指定:

其他方式還要‘left’、‘right’以及“outer”。外鏈接求取的是鍵的並集, 組合了左連接和右連接的效果。

how 的作用是合並時候以誰為標准,是否保留NaN值

多對多

多對多 連接產生的行的笛卡爾積。由於左邊的DataFrame有3個‘b’行, 右邊的有2個,所以最終結果中
就有6個‘b’行。

根據多個鍵進行合並, 傳入一個由列明組成的列表即可:
left = DataFrame( {"key1": ['foo', 'foo', 'bar'], "key2": ['one', 'two', 'one'], "lval": [1, 2, 3] } ) right = DataFrame( {"key1": ['foo', 'foo', 'bar', 'bar'], "key2": ['one', 'one', 'one', 'two'], "rval": [4, 5, 6, 7] } ) print(left) print(right) pm = pd.merge(left, right, on=["key1", "key2"], how="outer") print(pm)


on與left_on 和right_on的區別

這個是left_on 和right_on

去重或更改后綴

merge函數的參數

索引上的合並

merge方法求取連接鍵的並集

對於層次化索引的數據
這個時候必須以列表的形式指明用作合並鍵的多個列(注意對重復索引的處理)
lefth = DataFrame({'key1':[ 'Ohio', 'Ohio', 'Ohio','Nevada', 'Nevada',],
"key2":[2000, 2001, 2002,2001, 2002],
"data":np.arange(5.)
})
righth = DataFrame(np.arange(12).reshape((6, 2)),
index=[['Nevada', 'Nevada', 'Ohio', 'Ohio', 'Ohio', 'Ohio'],
[2001, 2000, 2000, 2000, 2001, 2002]],
columns=['event1', 'event2']
)
print(lefth)
print(righth)
pm = pd.merge(lefth, righth,left_on=['key1', 'key2'], right_index=True)
print(pm)

索引並集

DataFrame.join實例方法
它能更為方便地實現索引合並。它還可用於和合並多個帶有相同或相似索引的DataFrame對象, 而不管他們
之間有重疊的列。

print(left1.join(right1, how='inner'))
left2.join([1, 2], how='outer') #多個
