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:复制数据