Pandas数据拼接操作merge、join、concat

在做数据处理过程中会遇到多个数据集之间进行拼接的操作,这里由于平时都是用的Pandas读取的数据集,所以一般是针对的是DataFrame类型的数据进行拼接操作。

1. merge

用于通过一个或多个键将两个数据集的行连接起来,类似于 SQL 中的 JOIN。该函数的典型应用场景是,针对同一个主键存在两张包含不同字段的表,现在我们想把他们整合到一张表里。在此典型情况下,结果集的行数并没有增加,列数则为两个元数据的列数和减去连接键的数量。

df.merge(right, how='inner', on=None, left_on=None,
         right_on=None, left_index=False, right_index=False, 
         sort=False, suffixes=('_x', '_y'), copy=True)

参数解释: 

right: 要连接的目标数据,类型为DataFrame或者带列名的Series 

how :连接方式,类似sql语句中的(left ,right,inner,outer),这里默认为'inner', 可选的参数有left, right , inner , outer

on : 连接的列名或者index, 也就是指明2个要连接的对象之间通过哪个列名或者索引名进行连接。

left_on : 指定左边的DataFrame以哪个列名或者索引名进行连接

right_on :指定右边的DataFrame以哪个列名或者索引名进行连接

left_index:用左边的DataFrame当做连接Key

right_index:用右边的DataFrame当做连接Key

sort:按照字典顺序对连接Key进行排序,默认为False,默认连接键的顺序取决于连接类型

suffixes:连接后的列名默认带下标 ('_x' ,  '_y')

copy:默认复制,如果设置为False,则尽可能的避免复制

a . 默认以相同的列名进行连接键 

 

2. join 

拼接列,主要用于索引上的合并,提供了一个简便的方法用于将两个DataFrame中的不同的列索引合并成为一个DataFrame

df.join(other, on=None, how='left', lsuffix='', rsuffix='', sort=False)

参数解释:

other:另一个待拼接的DataFrame或者有名称列表的Series 

on:连接的列名或者index, 也就是指明2个要连接的对象之间通过哪个列名或者索引名进行连接。

how:连接方式,类似sql语句中的(left ,right,inner,outer),这里默认为'left', 可选的参数有left, right , inner , outer

lsuffix :  左边的连接Key要用的下标

rsuffix : 右边的连接Key要用的下标

sort:对拼接后的列名按照字典顺序排序,默认为False,False的时候,保留按照左边的DataFrame进行排序的顺序。

3. 

3. concat

可以沿着一条轴将多个对象堆叠到一起

concat方法相当于数据库中的全连接(UNION ALL),可以指定按某个轴进行连接,也可以指定连接的方式join(outer,inner 只有这两种)。与数据库不同的是concat不会去重,要达到去重的效果可以使用drop_duplicates方法

pandas.concat(objs, axis=0, join='outer',
              ignore_index=False, keys=None, levels=None,
              names=None, verify_integrity=False,copy=True)

参数解释:

objs: 需要连接的对象集合,一般是列表或字典;

axis: 0代表index 连接,1代表列连接 ,默认为0 

join:连接方式 ,默认为‘outer’,还可以选择‘inner’

ignore_index:默认为False,如果为True,则是指忽略之前的Index,直接按照默认分配index从0-N-1进行分配,对于结合后的index并没有啥意义的时候比较适用,用来重建索引

keys:用来创建层次化索引

levels: 层级,用来在列上进行划分

names:指定levels中的列名

verify_integrity :确定新结合的数据是否有重复值,但是会很耗费资源

copy:复制数据 

猜你喜欢

转载自blog.csdn.net/qq_27575895/article/details/88789147