详解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中计算三角函数之cos()方法的使用简介
May 15 Python
python:socket传输大文件示例
Jan 18 Python
如何在sae中设置django,让sae的工作环境跟本地python环境一致
Nov 21 Python
详解Python之unittest单元测试代码
Jan 24 Python
用Python3创建httpServer的简单方法
Jun 04 Python
Django如何简单快速实现PUT、DELETE方法
Jul 24 Python
tensorflow 实现打印pb模型的所有节点
Jan 23 Python
pycharm 中mark directory as exclude的用法详解
Feb 14 Python
Python多进程编程multiprocessing代码实例
Mar 12 Python
哪些是python中web开发框架
Jun 17 Python
使用Python绘制台风轨迹图的示例代码
Sep 21 Python
python 实现汉诺塔游戏
Nov 28 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简单操作mysql数据库的类
2015/04/16 PHP
php实现水印文字和缩略图的方法示例
2016/12/29 PHP
Laravel-admin之修改操作日志的方法
2019/09/30 PHP
超级兔子让浮动层消失的前因后果
2007/03/09 Javascript
javascript Array.remove() 数组删除
2009/08/06 Javascript
用JavaScript隐藏控件的方法
2009/09/21 Javascript
Jquery的hover方法让鼠标经过li时背景变色
2013/09/06 Javascript
jQuery中children()方法用法实例
2015/01/07 Javascript
JavaScript实现选择框按比例拖拉缩放的方法
2015/08/04 Javascript
js和jq使用submit方法无法提交表单的快速解决方法
2016/05/17 Javascript
浅析BootStrap栅格系统
2016/06/07 Javascript
canvas绘制多边形
2017/02/24 Javascript
微信小程序动态显示项目倒计时效果
2017/06/13 Javascript
浅谈JS如何实现真正的对象常量
2017/06/25 Javascript
Vue实现点击时间获取时间段查询功能
2020/08/21 Javascript
JavaScript中为事件指定处理程序的五种方式分析
2018/07/27 Javascript
Vue Element UI + OSS实现上传文件功能
2019/07/31 Javascript
基于原生js实现九宫格算法代码实例
2020/07/03 Javascript
js重写alert事件(避免alert弹框标题出现网址)
2020/12/04 Javascript
[01:10:27]DOTA2-DPC中国联赛正赛 SAG vs XG BO3 第二场 3月5日
2021/03/11 DOTA
Python实现将SQLite中的数据直接输出为CVS的方法示例
2017/07/13 Python
Python实现通过继承覆盖方法示例
2018/07/02 Python
python文件拆分与重组实例
2018/12/10 Python
wxpython布局的实现方法
2019/11/01 Python
python实发邮件实例详解
2019/11/11 Python
html5 canvas实现给图片添加平铺水印
2019/08/20 HTML / CSS
乌克兰品牌化妆品和香水在线商店:Bomond
2020/01/14 全球购物
会计毕业生求职简历的自我评价
2013/10/20 职场文书
招商业务员岗位职责
2013/12/16 职场文书
《春雨》教学反思
2014/04/24 职场文书
公共机构节能宣传周活动总结
2014/07/09 职场文书
装修施工安全责任书
2014/07/24 职场文书
上课迟到检讨书
2015/05/06 职场文书
Python使用sql语句对mysql数据库多条件模糊查询的思路详解
2021/04/12 Python
基于tensorflow权重文件的解读
2021/05/26 Python
使用Djongo模块在Django中使用MongoDB数据库
2021/06/20 Python