详解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多线程threading.Lock锁用法实例
Nov 01 Python
在Django框架中伪造捕捉到的URLconf值的方法
Jul 18 Python
Python 迭代器工具包【推荐】
May 06 Python
Python如何import文件夹下的文件(实现方法)
Jan 24 Python
Python中的浮点数原理与运算分析
Oct 12 Python
python+opencv识别图片中的圆形
Mar 25 Python
python实现判断一个字符串是否是合法IP地址的示例
Jun 04 Python
python进阶之多线程对同一个全局变量的处理方法
Nov 09 Python
django query模块
Apr 20 Python
使用虚拟环境打包python为exe 文件的方法
Aug 29 Python
什么是python的id函数
Jun 11 Python
keras 回调函数Callbacks 断点ModelCheckpoint教程
Jun 18 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
phpnow php探针环境检测代码
2014/11/04 PHP
php程序员应具有的7种能力小结
2014/11/27 PHP
PHP Reflection API详解
2015/05/12 PHP
PHP实现上传文件并存进数据库的方法
2015/07/16 PHP
Thinkphp框架开发移动端接口(2)
2016/08/18 PHP
CSS中一些@规则的用法小结
2021/03/09 HTML / CSS
javascript 强制刷新页面的实现代码
2009/12/13 Javascript
JS执行删除前的判断代码
2014/02/18 Javascript
js控制div弹出层实现方法
2015/05/11 Javascript
JavaScript中的toUTCString()方法使用详解
2015/06/12 Javascript
JS根据浏览器窗口大小实时动态改变网页文字大小的方法
2016/02/25 Javascript
实用jquery操作表单元素的简单代码
2016/07/04 Javascript
微信小程序 图片等比例缩放(图片自适应屏幕)
2016/11/16 Javascript
gulp解决跨域的配置文件问题
2017/06/08 Javascript
Vue学习笔记之表单输入控件绑定
2017/09/05 Javascript
NW.js 简介与使用方法
2018/02/01 Javascript
原生JS实现瀑布流插件
2018/02/06 Javascript
ES6 迭代器(Iterator)和 for.of循环使用方法学习(总结)
2018/02/08 Javascript
解决vue多个路由共用一个页面的问题
2018/03/12 Javascript
微信小程序在ios下Echarts图表不能滑动的问题解决
2019/07/10 Javascript
微信小程序实现图片选择并预览功能
2019/07/25 Javascript
js实现移动端tab切换时下划线滑动效果
2019/09/08 Javascript
使用vue-router切换页面时实现设置过渡动画
2019/10/31 Javascript
在Python中使用zlib模块进行数据压缩的教程
2015/06/26 Python
深入理解Python变量与常量
2016/06/02 Python
分析经典Python开发工程师面试题
2019/04/08 Python
使用Python实现将list中的每一项的首字母大写
2019/06/11 Python
Html5实现单张、多张图片上传功能
2019/04/28 HTML / CSS
浅谈HTML5 服务器推送事件(Server-sent Events)
2017/08/01 HTML / CSS
东芝官网商城:还原日式美学,打造美好生活
2018/12/27 全球购物
利用promise及参数解构封装ajax请求的方法
2021/03/24 Javascript
联谊活动策划书
2014/01/26 职场文书
结对共建协议书
2014/08/20 职场文书
大三学生学年自我鉴定
2014/09/12 职场文书
教师自查自纠材料
2014/10/14 职场文书
教代会闭幕词
2015/01/28 职场文书