详解pandas数据合并与重塑(pd.concat篇)


Posted in Python onJuly 09, 2019

1 concat

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

pd.concat(objs, axis=0, join='outer', join_axes=None, ignore_index=False,
    keys=None, levels=None, names=None, verify_integrity=False)

参数说明 

  • objs: series,dataframe或者是panel构成的序列lsit 
  • axis: 需要合并链接的轴,0是行,1是列 
  • join:连接的方式 inner,或者outer

其他一些参数不常用,用的时候再补上说明。

1.1 相同字段的表首尾相接

详解pandas数据合并与重塑(pd.concat篇)

# 现将表构成list,然后在作为concat的输入
In [4]: frames = [df1, df2, df3]
 
In [5]: result = pd.concat(frames)

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

In [6]: result = pd.concat(frames, keys=['x', 'y', 'z'])

效果如下

详解pandas数据合并与重塑(pd.concat篇)

1.2 横向表拼接(行对齐)

1.2.1 axis

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

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

详解pandas数据合并与重塑(pd.concat篇)

1.2.2 join

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

In [10]: result = pd.concat([df1, df4], axis=1, join='inner')

详解pandas数据合并与重塑(pd.concat篇)

1.2.3 join_axes

如果有join_axes的参数传入,可以指定根据那个轴来对齐数据 

例如根据df1表对齐数据,就会保留指定的df1表的轴,然后将df4的表与之拼接

In [11]: result = pd.concat([df1, df4], axis=1, join_axes=[df1.index])

详解pandas数据合并与重塑(pd.concat篇)

1.3 append

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

In [12]: result = df1.append(df2)

详解pandas数据合并与重塑(pd.concat篇)

1.4 无视index的concat

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

详解pandas数据合并与重塑(pd.concat篇)

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

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

1.5.1 可以直接用key参数实现

In [27]: result = pd.concat(frames, keys=['x', 'y', 'z'])

详解pandas数据合并与重塑(pd.concat篇)

1.5.2 传入字典来增加分组键

In [28]: pieces = {'x': df1, 'y': df2, 'z': df3}
In [29]: result = pd.concat(pieces)

详解pandas数据合并与重塑(pd.concat篇)

1.6 在dataframe中加入新的行

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

详解pandas数据合并与重塑(pd.concat篇)

In [34]: s2 = pd.Series(['X0', 'X1', 'X2', 'X3'], index=['A', 'B', 'C', 'D'])
 
In [35]: result = df1.append(s2, ignore_index=True)

表格列字段不同的表合并

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

详解pandas数据合并与重塑(pd.concat篇)

In [36]: dicts = [{'A': 1, 'B': 2, 'C': 3, 'X': 4},
  ....:     {'A': 5, 'B': 6, 'C': 7, 'Y': 8}]
  ....: 
 
In [37]: result = df1.append(dicts, ignore_index=True)

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
用Python脚本生成Android SALT扰码的方法
Sep 18 Python
Python 查找list中的某个元素的所有的下标方法
Jun 27 Python
Python爬虫小技巧之伪造随机的User-Agent
Sep 13 Python
python Django编写接口并用Jmeter测试的方法
Jul 31 Python
python代码 FTP备份交换机配置脚本实例解析
Aug 01 Python
Python for i in range ()用法详解
Sep 18 Python
Python基本类型的连接组合和互相转换方式(13种)
Dec 16 Python
pytorch如何冻结某层参数的实现
Jan 10 Python
TensorFlow实现保存训练模型为pd文件并恢复
Feb 06 Python
Django Form设置文本框为readonly操作
Jul 03 Python
Python获取excel内容及相关操作代码实例
Aug 10 Python
Python直接赋值及深浅拷贝原理详解
Sep 05 Python
python自定义函数实现最大值的输出方法
Jul 09 #Python
mac系统下Redis安装和使用步骤详解
Jul 09 #Python
使用python将多个excel文件合并到同一个文件的方法
Jul 09 #Python
python获取点击的坐标画图形的方法
Jul 09 #Python
Pandas之排序函数sort_values()的实现
Jul 09 #Python
python爬虫之快速对js内容进行破解
Jul 09 #Python
python 求某条线上特定x值或y值的点坐标方法
Jul 09 #Python
You might like
扩展你的 PHP 之入门篇
2006/12/04 PHP
php下使用无限生命期Session的方法
2007/03/16 PHP
Windows7下PHP开发环境安装配置图文方法
2010/05/20 PHP
ThinkPHP的截取字符串函数无法显示省略号的解决方法
2014/06/25 PHP
使用PHPMailer实现邮件发送代码分享
2014/10/23 PHP
PHP生成各种常见验证码和Ajax验证过程
2016/01/10 PHP
浅谈laravel 5.6 安装 windows上使用composer的安装过程
2019/10/18 PHP
jquery EasyUI的formatter格式化函数代码
2011/01/12 Javascript
JavaScript中的Array对象使用说明
2011/01/17 Javascript
NodeJS 模块开发及发布详解分享
2012/03/07 NodeJs
IE6下opacity与JQuery的奇妙结合
2013/03/01 Javascript
jQuery 删除/替换DOM元素的几种方式
2014/05/20 Javascript
JQuery使用index方法获取Jquery对象数组下标的方法
2015/05/18 Javascript
基于jQuery实现音乐播放试听列表
2016/04/14 Javascript
JS实现兼容各种浏览器的获取选择文本的方法【测试可用】
2016/06/21 Javascript
详解Vue.js之视图和数据的双向绑定(v-model)
2017/06/23 Javascript
Node.js应用设置安全的沙箱环境
2018/04/23 Javascript
JS实现返回上一页并刷新页面的方法分析
2019/07/16 Javascript
基于form-data请求格式详解
2019/10/29 Javascript
vue页面切换项目实现转场动画的方法
2019/11/12 Javascript
JavaScript常用工具函数汇总(浏览器环境)
2020/09/17 Javascript
python抓取京东价格分析京东商品价格走势
2014/01/09 Python
python web框架学习笔记
2016/05/03 Python
pandas 转换成行列表进行读取与Nan处理的方法
2018/10/30 Python
基于PyQt4和PySide实现输入对话框效果
2019/02/27 Python
Python 函数返回值的示例代码
2019/03/11 Python
python控制nao机器人身体动作实例详解
2019/04/29 Python
怎样实现H5+CSS3手指滑动切换图片的示例代码
2019/05/05 HTML / CSS
小学班主任寄语大全
2014/04/04 职场文书
小学生清明节演讲稿
2014/09/05 职场文书
端午节活动总结报告
2015/02/11 职场文书
医德医风个人总结
2015/02/28 职场文书
社区党员干部承诺书
2015/05/04 职场文书
学校艾滋病宣传活动总结
2015/05/09 职场文书
2016年校长新年寄语
2015/08/17 职场文书
Java中Dijkstra(迪杰斯特拉)算法
2022/05/20 Java/Android