详解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 27 Python
python的else子句使用指南
Feb 27 Python
总结Python编程中函数的使用要点
Mar 20 Python
python简单实现刷新智联简历
Mar 30 Python
Python安装Numpy和matplotlib的方法(推荐)
Nov 02 Python
解决Mac安装scrapy失败的问题
Jun 13 Python
Python List列表对象内置方法实例详解
Oct 22 Python
python/Matplotlib绘制复变函数图像教程
Nov 21 Python
python FTP批量下载/删除/上传实例
Dec 22 Python
python matplotlib.pyplot.plot()参数用法
Apr 14 Python
keras实现基于孪生网络的图片相似度计算方式
Jun 11 Python
为什么说python更适合树莓派编程
Jul 20 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
打造计数器DIY三步曲(下)
2006/10/09 PHP
用PHP实现Ftp用户的在线管理的代码
2007/03/06 PHP
php中3种方法删除字符串中间的空格
2014/03/10 PHP
ThinkPHP使用心得分享-上传类UploadFile的使用
2014/05/15 PHP
JavaScript isArray()函数判断对象类型的种种方法
2010/10/11 Javascript
使用jQuery validate 验证注册表单实例演示
2013/03/25 Javascript
教你用AngularJS框架一行JS代码实现控件验证效果
2014/06/23 Javascript
用C/C++来实现 Node.js 的模块(二)
2014/09/24 Javascript
jQuery实现瀑布流布局详解(PC和移动端)
2020/09/01 Javascript
基于HTML5上使用iScroll实现下拉刷新,上拉加载更多
2016/05/21 Javascript
js中遍历Map对象的方法
2016/07/27 Javascript
JavaScript中绑定事件的三种方式及去除绑定
2016/11/05 Javascript
bootstrap table单元格新增行并编辑
2017/05/19 Javascript
JavaScript学习笔记之基于定时器实现图片无缝滚动功能详解
2019/01/09 Javascript
详解微信小程序图片地扯转base64解决方案
2019/08/18 Javascript
浅析TypeScript 命名空间
2020/03/19 Javascript
[55:48]VGJ.S vs TNC Supermajor 败者组 BO3 第二场 6.6
2018/06/07 DOTA
Python利用正则表达式匹配并截取指定子串及去重的方法
2015/07/30 Python
分析并输出Python代码依赖的库的实现代码
2015/08/09 Python
Python实现PS滤镜中马赛克效果示例
2018/01/20 Python
python实现对文件中图片生成带标签的txt文件方法
2018/04/27 Python
Python字典创建 遍历 添加等实用基础操作技巧
2018/09/13 Python
Keras中的多分类损失函数用法categorical_crossentropy
2020/06/11 Python
python实现每天自动签到领积分的示例代码
2020/08/18 Python
如何将Pycharm中调整字体大小的方式设置为"ctrl+鼠标滚轮上下滑"
2020/11/17 Python
Python爬虫制作翻译程序的示例代码
2021/02/22 Python
新加坡网上化妆品店:Best Buy World
2018/05/18 全球购物
高中毕业自我鉴定
2013/12/16 职场文书
名人演讲稿范文
2013/12/28 职场文书
中秋寄语大全
2014/04/11 职场文书
班主任评语大全
2014/04/26 职场文书
计算机求职信
2014/07/02 职场文书
励志演讲稿600字
2014/08/21 职场文书
使用这 6个Vue加载动画库来减少我们网站的跳出率
2021/05/18 Vue.js
Python游戏开发实例之graphics实现AI五子棋
2021/11/01 Python
python 判断文件或文件夹是否存在
2022/03/18 Python