1. 程式人生 > >python---pandas.merge使用

python---pandas.merge使用

merge 函式引數

”’ merge: 合併資料集, 通過left, right確定連線欄位,預設是兩個資料集相同的欄位 引數 說明 left 參與合併的左側DataFrame right 參與合併的右側DataFrame how 連線方式:‘inner’(預設);還有,‘outer’、‘left’、‘right’ on 用於連線的列名,必須同時存在於左右兩個DataFrame物件中,如果位指定,則以left和right列名的交集作為連線鍵 left_on 左側DataFarme中用作連線鍵的列 right_on 右側DataFarme中用作連線鍵的列 left_index 將左側的行索引用作其連線鍵

right_index 將右側的行索引用作其連線鍵 sort 根據連線鍵對合並後的資料進行排序,預設為True。有時在處理大資料集時,禁用該選項可獲得更好的效能 suffixes 字串值元組,用於追加到重疊列名的末尾,預設為(‘_x’,‘_y’).例如,左右兩個DataFrame物件都有‘data’,則結果中就會出現‘data_x’,‘data_y’ copy 設定為False,可以在某些特殊情況下避免將資料複製到結果資料結構中。預設總是賦值 ”’

1.merge預設按相同欄位合併,且取兩個都有的。

import pandas as pddf1=pd.DataFrame({'name':['kate','herz','catherine','sally'],

'age':[25,28,39,35]})

df2=pd.DataFrame({'name':['kate','herz','sally'], 'score':[70,60,90]})pd.merge(df1,df2)age name score 0 25 kate 70 1 28 herz 60 2 35 sally 90

2. 當左右連線欄位不相同時,使用left_on,right_on

pd.merge(df1,df2,left_on="name",right_on='call_name')age name call_name score

0 25 kate kate 70 1 28 herz herz 60 2 35 sally sally 90

3. 合併後,刪除重複的列

pd.merge(df1,df2,left_on='name',right_on='call_name').drop('name',axis=1)age call_name score 0 25 kate 70 1 28 herz 60 2 35 sally 90

4.引數how的使用

“1)預設:inner 內連線,取交集”

pd.merge(df1,df2,on='name',how='inner')age name score 0 25 kate 70 1 28 herz 60 2 35 sally 90 ”’ “2)outer 外連線,取並集,並用nan填充”

df3=pd.DataFrame({'name':['kate','herz','sally','cristin'], 'score':[70,60,90,30]})pd.merge(df1,df3,on='name',how='outer') age name score 0 25 kate 70 1 28 herz 60 2 39 catherine NaN 3 35 sally 90 4 NaN cristin 30

“3)left 左連線, 左側取全部,右側取部分”

pd.merge(df1,df3,on='name',how='left') age name score 0 25 kate 70 1 28 herz 60 2 39 catherine NaN 3 35 sally 90

“4) right 有連線,左側取部分,右側取全部”

pd.merge(df1,df3,on='name',how='right') age name score 0 25 kate 70 1 28 herz 60 2 35 sally 90 3 NaN cristin 30