一分钟学会Python这个硬核操作

2020-11-26 10:49:10 浏览数 (1)

给定两个数据表: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 ---------------------

0 人点赞