一、merge函數用途
pandas中的merge()函數類似於SQL中join的用法,可以將不同數據集依照某些字段(屬性)進行合併操作,得到一個新的數據集。
二、merge()函數的具體參數
- 用法:
DataFrame1.merge(DataFrame2, how=‘inner’, on=None, left_on=None, right_on=None, left_index=False, right_index=False, sort=False, suffixes=(’_x’, ‘_y’)) - 參數說明
參數 | 說明 |
---|---|
how | 默認爲inner,可設爲inner/outer/left/right |
on | 根據某個字段進行連接,必須存在於兩個DateFrame中(若未同時存在,則需要分別使用left_on和right_on來設置) |
left_on | 左連接,以DataFrame1中用作連接鍵的列 |
right_on | 右連接,以DataFrame2中用作連接鍵的列 |
left_index | 將DataFrame1行索引用作連接鍵 |
right_index | 將DataFrame2行索引用作連接鍵 |
sort | 根據連接鍵對合並後的數據進行排列,默認爲True |
suffixes | 對兩個數據集中出現的重複列,新數據集中加上後綴_x,_y進行區別 |
三、merge用法舉例
- 創建兩個數據框
#利用字典dict創建數據框
dataDf1=pd.DataFrame({'lkey':['foo','bar','baz','foo'],
'value':[1,2,3,4]})
dataDf2=pd.DataFrame({'rkey':['foo','bar','qux','bar'],
'value':[5,6,7,8]})
print(dataDf1)
print(dataDf2)
>>>
lkey value
0 foo 1
1 bar 2
2 baz 3
3 foo 4
rkey value
0 foo 5
1 bar 6
2 qux 7
3 bar 8
- 內連接(Inner)
#inner鏈接
dataLfDf=dataDf1.merge(dataDf2, left_on='lkey',right_on='rkey')
>>>
lkey value_x rkey value_y
0 foo 1 foo 5
1 foo 4 foo 5
2 bar 2 bar 6
3 bar 2 bar 8
- 右鏈接(Right)
#Right鏈接
dataDf1.merge(dataDf2, left_on='lkey', right_on='rkey',how='right')
>>>
lkey value_x rkey value_y
0 foo 1.0 foo 5
1 foo 4.0 foo 5
2 bar 2.0 bar 6
3 bar 2.0 bar 8
4 NaN NaN qux 7
- 全鏈接(Outer)
#Outer鏈接
dataDf1.merge(dataDf2, left_on='lkey', right_on='rkey', how='outer')
>>>
lkey value_x rkey value_y
0 foo 1.0 foo 5.0
1 foo 4.0 foo 5.0
2 bar 2.0 bar 6.0
3 bar 2.0 bar 8.0
4 baz 3.0 NaN NaN
5 NaN NaN qux 7.0