pd.merge()常用參數
import pandas as pd
left = pd.DataFrame({'姓名':['q','w','e'],'年齡':['18','19','20']})
right = pd.DataFrame({'姓名':['q','w','r'],'籍貫':['湖北','北京','上海']})
left
姓名 年齡
0 q 18
1 w 19
2 e 20
right
姓名 籍貫
0 q 湖北
1 w 北京
2 r 上海
# 使用pd.merge()方式進行融合,在默認情況下將重疊列當做鍵,也可通過參數on指定鍵
pd.merge(left,right,on='姓名')
姓名 年齡 籍貫
0 q 18 湖北
1 w 19 北京
# how默認爲交集inner,可以指定爲並集outer
pd.merge(left,right,on='姓名',how='outer')
姓名 年齡 籍貫
0 q 18 湖北
1 w 19 北京
2 e 20 NaN
3 r NaN 上海
pd.merge(left,right,on='姓名',how='left')
姓名 年齡 籍貫
0 q 18 湖北
1 w 19 北京
2 e 20 NaN
pd.merge(left,right,on='姓名',how='right')
姓名 年齡 籍貫
0 q 18 湖北
1 w 19 北京
2 r NaN 上海
# 設定indicator參數爲True ,則融合結果中將增加列名爲"_merge"的一列,其取值代表了不同的含義:
pd.merge(left,right,on='姓名',how='outer',indicator=True)
姓名 年齡 籍貫 _merge
0 q 18 湖北 both
1 w 19 北京 both
2 e 20 NaN left_only
3 r NaN 上海 right_only
indicator參數可以接收一個字符串,生成的指標列的列名將由" _merge"變爲該字符串,結果說明如下:
pd.merge(left,right,on='姓名',how='outer',indicator=True)
姓名 年齡 籍貫 _merge
0 q 18 湖北 both
1 w 19 北京 both
2 e 20 NaN left_only
3 r NaN 上海 right_only
# indicator參數可以接收一個字符串,生成的指標列的列名將由" _merge"變爲該字符串:
pd.merge(left,right,on='姓名',how='outer',indicator='融合')
姓名 年齡 籍貫 融合
0 q 18 湖北 both
1 w 19 北京 both
2 e 20 NaN left_only
3 r NaN 上海 right_only
# 不按共同列的融合,融合後共同列名自動增加後綴_x,_y
left = pd.DataFrame({'姓名1':['q','w','e'],'信息':['18','19','20']})
right = pd.DataFrame({'姓名2':['q','w','r'],'信息':['湖北','北京','上海']})
pd.merge(left,right,left_on='姓名1',right_on='姓名2',how='outer')
姓名1 信息_x 姓名2 信息_y
0 q 18 q 湖北
1 w 19 w 北京
2 e 20 NaN NaN
3 NaN NaN r 上海
# 使用suffixes利用原列名以及後綴組合形成新的列名:
pd.merge(left,right,left_on='姓名1',right_on='姓名2',how='outer',suffixes=('_left','_right'))
姓名1 信息_left 姓名2 信息_right
0 q 18 q 湖北
1 w 19 w 北京
2 e 20 NaN NaN
3 NaN NaN r 上海
# 創建left的索引爲鍵, right的鍵爲姓名的兩個DataFrame :
left = pd.DataFrame({'年齡':['18','19','20']},index=['q','w','e'])
left.index.name='姓名'
right = pd.DataFrame({'姓名':['q','w','r'],'籍貫':['湖北','北京','上海']})
left
年齡
姓名
q 18
w 19
e 20
right
姓名 籍貫
0 q 湖北
1 w 北京
2 r 上海
pd.merge(left,right,left_index=True,right_on='姓名',how='outer') # 或者使用join:left.join(right,on='姓名',how='outer')
年齡 姓名 籍貫
0 18 q 湖北
1 19 w 北京
2 20 e NaN
2 NaN r 上海
# 創建left和right的索引都爲鍵的兩個DataFrame :
left = pd.DataFrame({'年齡':['18','19','20']},index=['q','w','e'])
left.index.name='姓名'
right = pd.DataFrame({'籍貫':['湖北','北京','上海']},index=['q','w','r'])
right.index.name='姓名'
# 使用pd.merge()
pd.merge(left,right,left_index=True,right_index=True,how='outer')
年齡 籍貫
姓名
e 20 NaN
q 18 湖北
r NaN 上海
w 19 北京
# 使用join
left.join(right,how='outer')
年齡 籍貫
姓名
e 20 NaN
q 18 湖北
r NaN 上海
w 19 北京
# DataFrame.combine_ first實例方法實現了用參數對象中的數據爲調用者對象的缺失數據"打補丁”,並且會自動對齊索引。