Pandas Dataframe操作concat、join、merge

Pandas Dataframe操作concat、join、merge

concat

concat函数是在pandas底下的方法,可以将数据根据不同的轴作简单的融合

参数说明:
objs: series,dataframe或者是panel构成的序列lsit
axis: 需要合并链接的轴,0是行,1是列
join:连接的方式 inner,或者outer
其他一些参数不常用,用的时候再补上说明。

相同字段的表首尾相接



要在相接的时候在加上一个层次的key来识别数据源自于哪张表,可以增加key参数

效果如下:


横向表拼接(行对齐)

axis

当axis = 1的时候,concat就是行对齐,然后将不同列名称的两张表合并

result = pd.concat([df1, df4], axis=1)



join

加上join参数的属性,如果为’inner’得到的是两表的交集,如果是outer,得到的是两表的并集。



join_axes

如果有join_axes的参数传入,可以指定根据那个轴来对齐数据
例如根据df1表对齐数据,就会保留指定的df1表的轴,然后将df4的表与之拼接



append

append是series和dataframe的方法,使用它就是默认沿着列进行凭借(axis = 0,列对齐)



无视index的concat

如果两个表的index都没有实际含义,使用ignore_index参数,置true,合并的两个表就睡根据列字段对齐,然后合并。最后再重新整理一个新的index。



合并的同时增加区分数据组的键

前面提到的keys参数可以用来给合并后的表增加key来区分不同的表数据来源

可以直接用key参数实现



传入字典来增加分组键



在dataframe中加入新的行

append方法可以将 series 和 字典就够的数据作为dataframe的新一行插入。



表格列字段不同的表合并

如果遇到两张表的列字段本来就不一样,但又想将两个表合并,其中无效的值用nan来表示。那么可以使用ignore_index来实现。



merge

merge的参数

on:列名,join用来对齐的那一列的名字,用到这个参数的时候一定要保证左表和右表用来对齐的那一列都有相同的列名。

left_on:左表对齐的列,可以是列名,也可以是和dataframe同样长度的arrays。

right_on:右表对齐的列,可以是列名,也可以是和dataframe同样长度的arrays。

left_index/ right_index: 如果是True的haunted以index作为对齐的key

how:数据融合的方法。

sort:根据dataframe合并的keys按字典顺序排序,默认是,如果置false可以提高表现。

复合key的合并方法

使用merge的时候可以选择多个key作为复合可以来对齐合并。

通过on指定数据合并对齐的列



没有指定how的话默认使用inner方法。

how的方法有:

left

只保留左表的所有数据



right

只保留右表的所有数据



outer

保留两个表的所有信息



inner

只保留两个表中公共部分的信息



indicator

v0.17.0 版本的pandas开始还支持一个indicator的参数,如果置True的时候,输出结果会增加一列 ’ _merge’。_merge列可以取三个值

join

dataframe内置的join方法是一种快速合并的方法。它默认以index作为对齐的列。

how 参数

join中的how参数和merge中的how参数一样,用来指定表合并保留数据的规则。

具体可见前面的 how 说明。

on 参数

在实际应用中如果右表的索引值正是左表的某一列的值,这时可以通过将 右表的索引 和 左表的列 对齐合并这样灵活的方式进行合并。