merge(left, right, how='inner', on=none, left_on=none, right_on=none, left_index=false, right_index=false, sort=false, suffixes=('_x', '_y'), copy=true, indicator=false, validate=none)
一、左右連線鍵名一樣
import pandas as pd
df1=pd.dataframe()
df2=pd.dataframe()
display(df1,df2,pd.merge(df1,df2))
df1key value1
0 a 0
1 b 1
2 a 2
3 b 3
4 b 4
df2key value2
0 a 0
1 c 1
2 c 2
3 c 3
4 c 4
pd.merge(df1,df2) ##以df1、df2中相同的列名key進行連線,預設how='inner', pd.merge(df1,df2,on='key',how='inner')
key value1 value2
0 a 0 0
1 a 2 0
pd.merge(df1,df2,how='outer') ## 全連線,取並集
key value1 value2
0 a 0.0 0.0
1 a 2.0 0.0
2 b 1.0 nan
3 b 3.0 nan
4 b 4.0 nan
5 c nan 1.0
6 c nan 2.0
7 c nan 3.0
8 c nan 4.0
pd.merge(df1,df2,how='left') ### 左連線,左邊取全部,右邊取部分,沒有值則用nan填充
key value1 value2
0 a 0 0.0
1 b 1 nan
2 a 2 0.0
3 b 3 nan
4 b 4 nan
pd.merge(df1,df2,how='right') ### 右連線,右邊取全部,左邊取部分,沒有值則用nan填充
key value1 value2
0 a 0.0 0
1 a 2.0 0
2 c nan 1
3 c nan 2
4 c nan 3
5 c nan 4
二、左右連線鍵名不一樣
如果兩個dataframe的左右連線鍵的列名不一樣,可以用left_on,right_on來進行指定
df3=pd.dataframe()
df4=pd.dataframe()
df3lkey data1
0 a 0
1 b 1
2 a 2
3 b 3
4 b 4
df4rkey data2
0 a 0
1 c 1
2 c 2
3 c 3
4 c 4
pd.merge(df3,df4,left_on='lkey',right_on='rkey') ### 內連線,預設how='inner'
lkey data1 rkey data2
0 a 0 a 0
1 a 2 a 0
pd.merge(df3,df4,left_on='lkey',right_on='lkey',how='outer') ### 全連線
lkey data1 rkey data2
0 a 0.0 a 0.0
1 a 2.0 a 0.0
2 b 1.0 nan nan
3 b 3.0 nan nan
4 b 4.0 nan nan
5 nan nan c 1.0
6 nan nan c 2.0
7 nan nan c 3.0
8 nan nan c 4.0
pd.merge(df3,df4,left_on='lkey',right_on='rkey',how='left') ### 左連線
lkey data1 rkey data2
0 a 0 a 0.0
1 b 1 nan nan
2 a 2 a 0.0
3 b 3 nan nan
4 b 4 nan nan
pd.merge(df3,df4,left_on='lkey',right_on='rkey',how='right') ### 右連線
lkey data1 rkey data2
0 a 0.0 a 0
1 a 2.0 a 0
2 nan nan c 1
3 nan nan c 2
4 nan nan c 3
5 nan nan c 4
三、索引作為連線鍵
df5=pd.dataframe(np.arange(12).reshape(3,4),index=list('abc'),columns=['v1','v2','v3','v4'])
df6=pd.dataframe(np.arange(12,24,1).reshape(3,4),index=list('abd'),columns=['v5','v6','v7','v8'])
df5v1 v2 v3 v4
a 0 1 2 3
b 4 5 6 7
c 8 9 10 11
df6v5 v6 v7 v8
a 12 13 14 15
b 16 17 18 19
d 20 21 22 23
pd.merge(df5,df6,left_index=true,right_index=true)
資料分析入門 pandas之合併函式merge
merge有點類似sql中的join,可以將不同資料集按照某些字段進行合併,得到新的資料集 1.引數一覽表 2.一對一連線 預設情況下,會按照相同欄位的進行連線 例如有相同欄位emp的兩個df,merge的時候就會根據emp進行連線,且根據引數知道,預設是內連線 使用預設的不是很明了,通常情況下,我...
python 資料合併函式merge
python中的merge函式與sql中的 join 用法非常類似,以下是merge 函式中的引數 merge left,right,how inner on none,left on none,right on none,left index false,right index false,sor...
python 資料合併之join
個人覺得資料框合併最簡單的莫過於join,乙個小函式卻有大作用。具體介紹 dataframe.join other,on none,how left lsuffix rsuffix sort false other 乙個dataframe series 要有命名 或者dataframe組成的list...