我是靠谱客的博主 负责月光,最近开发中收集的这篇文章主要介绍【python学习笔记】Dataframe和类SQL的merge函数(二),觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

上一篇文章中提到的merge函数,也就是类似于SQL的join方法中,主要的参数是on参数;

除了on参数,还有专门针对index join的参数:index;

可以理解成是左边的一列和右边的索引进行连接,想了想,R中应该是data.table有这种便利的函数,其实我更喜欢直接用SQLDF包;

书中的例子是:

left1=DataFrame({'key':['a','b','a','a','b','c'],
'value':range(6)})
right1=DataFrame({'group_val':[3.5,7]},index=['a','b'])

这两个数据框如下:

left1
key
value
0
a
0
1
b
1
2
a
2
3
a
3
4
b
4
5
c
5
right1
group_val
a
3.5
b
7.0

可以看到下面的right1 的index 是 a和b;

那么:

pd.merge(left1,right1,
left_on='key',
right_index=True,
how='outer')

这个函数就是针对left1和right1两个数据框进行合并,join的连接键是左边是key这一列,而右边的看到不用on,而是right_index这个参数,结果为

key
value
group_val
0
a
0
3.5
2
a
2
3.5
3
a
3
3.5
1
b
1
7.0
4
b
4
7.0
5
c
5
NaN

其实就是外连接,外连接会产生笛卡尔积,所以每一个a,即使在right数据框中没有也会对应一个重复的值,当然c就是NA了。

left2=DataFrame({'key':['a','b','a','a','b','c'],
'value':range(6),
'data':np.random.randn(6)})
right2=DataFrame({'group_val':[3.5,7]},
index=[['a','b'],[0,0]])
pd.merge(left2,right2,
left_on=['key','value'],
right_index=True,
how='inner')

修正一下这两个数据框,添加两个index在right2中,然后再次合并,发现结果为:

 data key
value
group_val
0 -0.771492
a
0
3.5

也就是通过key,value作为连接键,然后左边连得是data,右边连得是index对应的那一行,

顺便说一句,在索引中,数字一定要是数字形式;比如:

right2=DataFrame({'group_val':[3.5,7]},
index=[['a','b'],[0,0]])

这样是能连接上的,但是如果:

right2=DataFrame({'group_val':[3.5,7]},
index=[['a','b'],['0','0']])

这样的话,0会被默认认为是字符,无法进行连接。

最后

以上就是负责月光为你收集整理的【python学习笔记】Dataframe和类SQL的merge函数(二)的全部内容,希望文章能够帮你解决【python学习笔记】Dataframe和类SQL的merge函数(二)所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(156)

评论列表共有 0 条评论

立即
投稿
返回
顶部