给定两个数据表:left, right,它们至少存在一个名字相同的列,名字假定为 key,如何连接这两个表?
Python提供了 merge 操作完成这个事情。
left 表的 key取值为:k0, k1, k2; right表的 key取值为:k0, k0, k1
1) 如果 left表的 key 指向 right表,则称此连接方式 how 为: left : 关系图表达为如下:
代码语言:javascript复制left right
k0 k0
k0
k1 k1
k2 NaN
2) 如果 right表的 key 指向 left表,则称此连接方式 how 为: right
代码语言:javascript复制right left
k0 k0
k0
k1 k1
3) 如果只拿 left 和 right表 共有 key建立关系 ,则称此连接方式 how 为: inner
代码语言:javascript复制left right
k0 k0
k0 k0
k1 k1
4) 如果 left 和 right表的 key合并后再建立关系 ,则称此连接方式 how 为: outer
代码语言:javascript复制left right
k0 k0
k0
k1 k1
k2 NaN
以上就是merge中连接两个表时,根据key节点建立关系的 4 种方法。
下面通过举例验证
left 和 right 表数据:
代码语言:javascript复制left
age1 key
0 10 k0
1 20 k1
2 30 k2
right
age2 key
0 40 k0
1 50 k0
2 60 k1
how = 'left'
代码语言:javascript复制pd.merge(left,right,how='left',on='key')
age1 key age2
0 10 k0 40.0
1 10 k0 50.0
2 20 k1 60.0
3 30 k2 NaN
how = 'right'
代码语言:javascript复制pd.merge(left,right,how='right',on='key')
age1 key age2
0 10 k0 40
1 10 k0 50
2 20 k1 60
how = 'inner'
代码语言:javascript复制pd.merge(left,right,how='inner',on='key')
age1 key age2
0 10 k0 40
1 10 k0 50
2 20 k1 60
how = 'outer'
代码语言:javascript复制pd.merge(left,right,how='outer',on='key')
age1 key age2
0 10 k0 40.0
1 10 k0 50.0
2 20 k1 60.0
3 30 k2 NaN
--------------------- End ---------------------