Python中merge和concat的区别,并分别实现左连接(leftjoin)、右连接。。。通过python实现Sql中的表连接操作
⼀、merg实现表连接
数据准备:
import pandas as pd
import numpy as np
left = pd.DataFrame({'key':['K0','K1','K2','K3'],
'A':['A0','A1','A2','A3'],
'B':['B0','B1','B2','B3']
})
right = pd.DataFrame({'key':['K0','K11','K2','K31'],
'C':['C0','C1','C2','C3'],
'D':['D0','D1','D2','D3']
})
输出结果:
1、单条件连接:merge
内连接:
# how参数不写默认是内连接
<(left,right,on = ['key'])
<(left,right,on = ['key'],how='inner')
输出结果:
外连接(全连接):
# 外连接
<(left,right,on = ['key'],how='outer')
输出结果:
左连接:
# 左连接
<(left,right,on = ['key'],how='left')
输出结果:
右连接:
# 右连接
<(left,right,on = ['key'],how='right')
输出结果:
2、多条件连接:merge
数据准备:
#多条件关联
left1 = pd.DataFrame({'key1':['K0','K0','K1','K2'],
'key2':['K0','K1','K0','K1'],
'A':['A0','A1','A2','A3'],
'B':['B0','B1','B2','B3']
})
right1 = pd.DataFrame({'key1':['K0','K1','K1','K2'],
'key2':['K0','K0','K0','K0'],
'C':['C0','C1','C2','C3'],
'D':['D0','D1','D2','D3']
})
输出结果:
内连接:
# 内连接 ,how 参数不写默认是内连接
<(left1,right1,on=['key1','key2'])
<(left1,right1,on=['key1','key2'],how = 'inner')
输出结果:
外连接(全连接):
# 外连接
<(left1,right1,on=['key1','key2'],how= 'outer')
输出结果:
左连接:
# 左连接
<(left1,right1,on=['key1','key2'],how= 'left')
输出结果:
右连接:
# 右连接
sql left join 多表连接pd.merge(left1,right1,on=['key1','key2'],how= 'right')
输出结果:
⼆、concat实现表连接
数据准备:
df1 = pd.s((3,4))*0,columns= ['a','b','c','d'],index=(1,2,3)) df2 = pd.s((3,4))*11,columns= ['b','c','d','e'],index=(2,3,4))
输出结果:
1、⾏连接(横向连接):
全连接:
输出结果:
左连接:
输出结果:
右连接:
输出结果:
2、列连接(纵向连接):
两种⽅法实现:concat/append
⽅法1、concat
输出结果:
调整索引的顺序:
输出结果:
⽅法2、append
df1.append(df2,ignore_index=True)
输出结果:
三、merge和concat的区别:
1、merge默认是内连接,concat默认是外连接
2、merge的参数how有left/right/inner/outer,concat的参数axis有0/1(0:列,1:⾏),通过concat实现左/右连接主要是跟参数写的位置有关
3、merge合并的范围⼴泛,可以通过索引/列关联,concat合并的范围⼩,只⽀持索引的合并

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。