python 數據融合函數pd.merge() (數據酷客學習總結)

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實例方法實現了用參數對象中的數據爲調用者對象的缺失數據"打補丁”,並且會自動對齊索引。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章