pandas-数据链接合并


1.concat链接

经过concat进行dataframe或者series的链接,主要参数:web

  • axis:指定链接的方向,默认axis=0,上下链接。
  • join:指定链接方式,默认outer并集,inner交集。
  • keys:层级索引,能够指定链接的数据的表来源。
  • join_axes:链接以后保留的索引列。
  • ignore_index:从新生成从0开始的行索引。

导入数据:
在这里插入图片描述sql

1.1 axis、ignore_index参数

在这里插入图片描述

1.2 join参数

在这里插入图片描述

1.3 keys参数

在这里插入图片描述

1.4 join_axes参数

在这里插入图片描述

2.append追加

append至关因而concat的简写,只能进行一行一行的追加,即上下堆叠。
在这里插入图片描述app

3.merge合并

经过merge方法,能够将两个dataframe进行合并链接,这种链接相似于sql中对两张表进行join链接。主要参数:svg

  • how:链接方式,inner内链接(默认),outer外链接、left左链接、right右链接。
  • on:指定链接使用的列,默认是两个dataframe中全部同名的列。
  • left_on、right_on:指定左右两个dataframe分别使用什么列进行链接。
  • left_index、right_index:指定左右两个dataframe分别使用什么行索引进行链接。
    left_on和left_index,right_on和right_index不能同时出现。
  • suffixes:当两个dataframe有相同列名的列,合并的时候,默认显示为_x和_y。

导入数据:
在这里插入图片描述3d

3.1 how参数

默认内链接inner,至关于sql语句select df1.* ,df2.* from df1 join df2 on df1.id = df2.id
在这里插入图片描述
左链接:
df1.merge(df2,how = ‘left’)
相似于select df1. * ,df2. * from df1 left join df2 on df1.id = df2.id
保留全部df1的值,df2匹配df1的值返回,若是没有匹配值返回空值。
在这里插入图片描述
右链接:
df1.merge(df2,how = ‘right’)
相似于select df1. * ,df2. * from df1 right join df2 on df1.id = df2.id
保留全部df2的值,df1匹配df2的值返回,若是没有匹配值返回空值。
在这里插入图片描述
外链接:
df1.merge(df2,how = ‘outer’)
相似于select df1. * ,df2. * from df1 full outer join df2 on df1.id = df2.id
保留全部df一、df2的值,df1若是有匹配df2的值返回,若是没有匹配值返回空值。
在这里插入图片描述xml

3.2 on参数

不写on,默认是按照两个dataframe中全部同名列进行链接。
在这里插入图片描述blog

3.3 left_on、right_on、suffixes参数

在这里插入图片描述

3.4 left_index、right_index参数

导入数据:
在这里插入图片描述
df和df3的行索引匹配链接
df.merge(df3,left_index = True,right_index = True)
在这里插入图片描述
df的行索引和df3的列名=1进行匹配链接:
df.merge(df3,left_index = True,right_on = 1)
在这里插入图片描述索引

4.join合并

默认使用左右两表的行索引进行左链接。
join的主要参数:
how:指定链接方式。默认left左链接,能够是inner、outer、left、right。
on:指定左表(左dataframe)使用哪一个字段与右表(右dataframe)的行索引链接,右边只能用行索引。
lsuffix、rsuffix:当两个dataframe有同名列,指定lsuffix左边后缀,rsuffix右边后缀,若不指定会报错。图片

导入数据:
在这里插入图片描述
默认左链接,保留全部df1的值,df1的列名0,1与df2的行索引0,1进行匹配,返回df2匹配的值,不匹配返回空值。
在这里插入图片描述
默认左链接,指定df1中的列0值(100,3,7)与df2中的行索引(0,1,3)的记录进行匹配,只有df1的列0值3与df2的行索引号3匹配成功,返回值,没有匹配返回空值。
在这里插入图片描述
设置how = ‘inner’内链接,只有df1的列0中的值3与df2的行索引3的记录匹配,因为是内链接,只返回匹配成功的记录行。
在这里插入图片描述ci

5.merge与join总结

merge与join相似,都是进行两张表的链接。

不一样:

  • merge默认进行的内链接(inner),join默认进行的左外链接(left)。
  • 当出现同名字段(列索引)时,merge能够自动补后缀(_x, _y),可是join不会自动补后缀,而是会产生错误columns overlap but no suffix specified: Int64Index([0, 1], dtype=‘int64’)。
  • merge默认使用同名的列进行等值链接。join默认使用左右两表的行索引进行链接。
  • merge中on参数,指定两张表中共同的字段,而join中on参数,仅指定左表中的字段(右表依然使用行索引)。