您的位置:首页 > 其它

pandas.Dataframe 的合并

2017-05-04 16:21 633 查看
对于”group by”操作,我们通常是指以下一个或多个操作步骤:

(Splitting)按照一些规则将数据分为不同的组;

(Applying)对于每组数据分别执行一个函数;

(Combining)将结果组合到一个数据结构中;

pandas提供了一个类似于关系数据库的连接(join)操作的方法merage,可以根据一个或多个键将不同DataFrame中的行连接起来

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


对于多对多连接,结果采用的是行的笛卡尔积。

参数说明:

left与right
:两个不同的DataFrame

how
:指的是合并(连接)的方式有inner(内连接),left(左外连接),right(右外连接),outer(全外连接);默认为inner

on
: 指的是用于连接的列索引名称。必须存在右右两个DataFrame对象中,如果没有指定且其他参数也未指定则以两个DataFrame的列名交集做为连接键

left_on
:左则DataFrame中用作连接键的列名;这个参数中左右列名不相同,但代表的含义相同时非常有用。

right_on
:右则DataFrame中用作 连接键的列名

left_index
:使用左则DataFrame中的行索引做为连接键

right_index
:使用右则DataFrame中的行索引做为连接键

sort
:默认为True,将合并的数据进行排序。在大多数情况下设置为False可以提高性能

suffixes
:字符串值组成的元组,用于指定当左右DataFrame存在相同列名时在列名后面附加的后缀名称,默认为(‘_x’,’_y’)

copy
:默认为True,总是将数据复制到数据结构中;大多数情况下设置为False可以提高性能

indicator
:在 0.17.0中还增加了一个显示合并数据中来源情况;如只来自己于左边(left_only)、两者(both)

join 拼接列,主要用于索引上的合并

join方法提供了一个简便的方法用于将两个DataFrame中的不同的列索引合并成为一个DataFrame

join(self, other, on=None, how=’left’, lsuffix=”, rsuffix=”,sort=False):

其中参数的意义与merge方法基本相同,只是join方法默认为左外连接how=left,通过lsuffix=”, rsuffix=” 区分相同列名的列

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

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

concat(objs, axis=0, join='outer', join_axes=None, ignore_index=False,

keys=None, levels=None, names=None, verify_integrity=False, copy=True):


轴向连接 pd.concat() 就是单纯地把两个表拼在一起,这个过程也被称作连接(concatenation)、绑定(binding)或堆叠(stacking)。因此可以想见,这个函数的关键参数应该是 axis,用于指定连接的轴向。

在默认的 axis=0 情况下,pd.concat([obj1,obj2]) 函数的效果与 obj1.append(obj2) 是相同的;而在 axis=1 的情况下,pd.concat([df1,df2],axis=1) 的效果与pd.merge(df1,df2,left_index=True,right_index=True,how=’outer’) 是相同的。

可以理解为 concat 函数使用索引作为“连接键”

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

axis=0 是连接轴向join=’outer’ 参数作用于当另一条轴的 index 不重叠的时候,只有 ‘inner’ 和 ‘outer’ 可选(顺带展示 ignore_index=True 的用法)

concat 一些特点:

作用于Series时,如果在axis=0时,类似union。axis=1 时,组成一个DataFrame,

索引是union后的,列是类似join后的结果,参数join_axe指定自定义索引,参数keys 创建层次化索引,通过参数ignore_index=True 重建索引。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  pandas