昨天爬取数据时由于中间断了,又不想从第一页再重新开始爬取,所以分两次爬取了数据,这样就涉及到了把数据合并的问题,于是就从学习文档中整理了pandas中的四种合并方式,和大家一起分享~~
数据合并之concat
我们可以通过DataFrame或Series类型的concat方法,来进行连接操作,连接时,会根据索引进行对齐。
我们来结合实例来理解一下,首先创建两个DataFrame对象df1和df2
1.指定链接轴axis=?
通过轴axis指定堆叠方向。0竖直方向,1水平方向。
2.指定链接方式join=?
outer,结果集显示并集, inner结果集显示交集。
3.指定数据源产生层级索引keys=?
可以通过keys观看数据来源那一张表。(产生一个层级索引)
4.指定链接后要保留的索引列join_axes=?
通过join_axes指定要保留的列索引。
5.忽略以前的索引ignore_index=True
可以通过ignore_index设置为True,忽略以前的索引(行索引),重新创建连续的索引
数据合并之append
在对行进行连接时,也可以使用Series或DataFrame的append方法。
append是concat的简略形式,只不过只能在axis=0上进行合并
数据合并之merge
通过pandas或DataFrame的merge方法,可以进行两个DataFrame的连接,这种连接类似于SQL中对两张表进行的join连接。
1.可以通过how指定连接方式。默认为内连接。
2.通过on来指定连接的列(on指定的列必须同时出现在两个表之中)。(默认使用所有同名的列进行等值连接)
3.如果连接的列名不同,则我们可以使用left_on与right_on参数分别指定左,右两张表用来进行等值连接的索引名。
4.我们可以通过left_index,right_index来指定是否使用索引来充当连接条件,True,是,False,不是。
# 注意:left_index(right_index)与left_on(right_on)不能同时指定。
5.我们也可以自定义连接的后缀。(两张表存在同名字段时,可以使用。默认为_x,_y)
数据合并之join
与merge方法类似,但是默认使用索引进行连接。
how:指定连接方式。可以是inner, outer, left, right,默认为left。
on:设置当前DataFrame对象使用哪个列与参数对象的索引进行连接。
lsuffix / rsuffix:当两个DataFrame列名相同时,指定每个列名的后缀(用来区分),如果不指定,列名相同会产生错误。
1.们可以通过how指定连接方式,如果没有指定连接方式,默认为左外连接(left)
2.on参数指定当前的表中使用哪个列与参数表(右侧表)的索引进行连接。
join与merge类似,都是进行两张表的连接。
不同点:
merge默认进行的内连接(inner),join默认进行的左外连接(left)。
当出现同名字段(列索引)时,merge可以自动补后缀(_x, _y),但是join不会自动补后缀,而是会产生错误。
merge默认使用同名的列进行等值连接。join默认使用左右两表的索引进行连接。
merge中on参数,指定两张表中共同的字段,而join中on参数,仅指定左表中的字段(右表依然使用索引)。
merge与join侧重点不同,merge侧重的是使用字段进行连接,而join侧重的是使用索引进行连接。
加油~~