python 資料合併函式merge

2021-09-08 17:05:08 字數 3589 閱讀 6483

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