python 資料合併函式merge

2021-09-20 03:48:46 字數 3836 閱讀 5677

python中的merge函式與sql中的 join 用法非常類似,以下是merge( )函式中的引數:

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))

df1

key   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') ##  全連線,取並集

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()

df3

lkey  data1

0    a      0

1    b      1

2    a      2

3    b      3

4    b      4

df4

rkey  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'])

df5

v1  v2  v3  v4

a   0   1   2   3

b   4   5   6   7

c   8   9  10  11

df6

v5  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)

v1	v2	v3	v4	v5	v6	v7	v8

a 0 1 2 3 12 13 14 15

b 4 5 6 7 16 17 18 19

資料分析入門 pandas之合併函式merge

merge有點類似sql中的join,可以將不同資料集按照某些字段進行合併,得到新的資料集 1.引數一覽表 2.一對一連線 預設情況下,會按照相同欄位的進行連線 例如有相同欄位emp的兩個df,merge的時候就會根據emp進行連線,且根據引數知道,預設是內連線 使用預設的不是很明了,通常情況下,我...

python 資料合併函式merge

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,val...

python 資料合併之join

個人覺得資料框合併最簡單的莫過於join,乙個小函式卻有大作用。具體介紹 dataframe.join other,on none,how left lsuffix rsuffix sort false other 乙個dataframe series 要有命名 或者dataframe組成的list...