详解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缩进区别分析
Feb 15 Python
Python两个内置函数 locals 和globals(学习笔记)
Aug 28 Python
python matplotlib 在指定的两个点之间连线方法
May 25 Python
目前最全的python的就业方向
Jun 05 Python
python dataframe常见操作方法:实现取行、列、切片、统计特征值
Jun 09 Python
Python读写文件基础知识点
Jun 10 Python
基于Python数据结构之递归与回溯搜索
Feb 26 Python
通过实例解析Python return运行原理
Mar 04 Python
PyCharm 在Windows的有用快捷键详解
Apr 07 Python
解决Pycharm 运行后没有输出的问题
Feb 05 Python
Python就将所有的英文单词首字母变成大写
Feb 12 Python
python利用opencv实现颜色检测
Feb 23 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/09/05 PHP
php中文件上传的安全问题
2006/10/09 PHP
php源代码安装常见错误与解决办法分享
2013/05/28 PHP
使用php实现截取指定长度
2013/08/06 PHP
禁用Tab键JS代码兼容Firefox和IE
2014/04/18 Javascript
深入理解javascript中的立即执行函数(function(){…})()
2014/06/12 Javascript
jquery实现不包含当前项的选择器实例
2015/06/25 Javascript
javascript表单验证大全
2015/08/12 Javascript
整理Javascript事件响应学习笔记
2015/12/02 Javascript
动态加载js文件简单示例
2016/04/21 Javascript
jQuery插件扩展实例【添加回调函数】
2016/11/26 Javascript
JS获取本周周一,周末及获取任意时间的周一周末功能示例
2017/02/09 Javascript
jQuery用户头像裁剪插件cropbox.js使用详解
2017/06/07 jQuery
ES6中Array.copyWithin()函数的用法实例详解
2017/09/16 Javascript
使用express搭建一个简单的查询服务器的方法
2018/02/09 Javascript
vue2.0组件之间传值、通信的多种方式(干货)
2018/02/10 Javascript
开发一个Parcel-vue脚手架工具(详细步骤)
2018/09/22 Javascript
在JS循环中使用async/await的方法
2018/10/12 Javascript
vue中将html字符串转换成html后遇到的问题小结
2018/12/10 Javascript
微信小程序+腾讯地图开发实现路径规划绘制
2019/05/22 Javascript
原生js实现抽奖小游戏
2019/06/27 Javascript
layer弹出层自适应高度,垂直水平居中的实现
2019/09/16 Javascript
vue封装swiper代码实例解析
2019/10/08 Javascript
小程序自动化测试的示例代码
2020/08/11 Javascript
[00:27]DOTA2荣耀之路2:Patience from zhou!
2018/05/24 DOTA
django rest framework 实现用户登录认证详解
2019/07/29 Python
python中的&&及||的实现示例
2019/08/07 Python
python字符串替换re.sub()实例解析
2020/02/09 Python
Python 无限级分类树状结构生成算法的实现
2021/01/21 Python
留学自荐信
2013/10/10 职场文书
教师节促销方案
2014/03/22 职场文书
入股协议书
2014/04/14 职场文书
大学生社会实践活动总结报告
2015/05/06 职场文书
apache基于端口创建虚拟主机的示例
2021/04/22 Servers
python正则表达式re.search()的基本使用教程
2021/05/21 Python
vue-cropper组件实现图片切割上传
2021/05/27 Vue.js