详解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计算书页码的统计数字问题实例
Sep 26 Python
Python实现短网址ShortUrl的Hash运算实例讲解
Aug 10 Python
python文本数据相似度的度量
Mar 12 Python
python删除不需要的python文件方法
Apr 24 Python
利用python的socket发送http(s)请求方法示例
May 07 Python
Python异常处理操作实例详解
May 10 Python
Python高级用法总结
May 26 Python
Macbook安装Python最新版本、GUI开发环境、图像处理、视频处理环境详解
Feb 17 Python
用什么库写 Python 命令行程序(示例代码详解)
Feb 20 Python
Python numpy矩阵处理运算工具用法汇总
Jul 13 Python
13个Pandas实用技巧,助你提高开发效率
Aug 19 Python
解决tensorflow模型压缩的问题_踩坑无数,总算搞定
Mar 02 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
用文本作数据处理
2006/10/09 PHP
将数字格式的计算结果转为汉字格式
2006/10/09 PHP
图文介绍PHP添加Redis模块及连接
2015/07/28 PHP
php导出生成word的方法
2015/12/25 PHP
laravel创建类似ThinPHP中functions.php的全局函数
2016/11/26 PHP
php修改数组键名的方法示例
2017/04/15 PHP
Laravel中前端js上传图片到七牛云的示例代码
2017/09/04 PHP
javascript入门·图片对象(无刷新变换图片)\滚动图像
2007/10/01 Javascript
jquery随机展示头像代码
2011/12/21 Javascript
JQuery中判断一个元素下面是否有内容或者有某个标签的判断代码
2012/02/02 Javascript
JS方法调用括号的问题探讨
2014/01/24 Javascript
使用AngularJS处理单选框和复选框的简单方法
2015/06/19 Javascript
Js+Ajax,Get和Post在使用上的区别小结
2016/06/08 Javascript
Vue 过渡(动画)transition组件案例详解
2017/01/22 Javascript
JS实现批量上传文件并显示进度功能
2017/06/27 Javascript
AngularJS实现的base64编码与解码功能示例
2018/05/17 Javascript
微信小程序实现聊天对话(文本、图片)功能
2018/07/06 Javascript
解决Vue+Element ui开发中碰到的IE问题
2018/09/03 Javascript
Vue开发环境跨域访问问题
2020/01/22 Javascript
js实现自动播放匀速轮播图
2020/02/06 Javascript
微信小程序实现抖音播放效果的实例代码
2020/04/11 Javascript
vue2.* element tabs tab-pane 动态加载组件操作
2020/07/19 Javascript
python中星号变量的几种特殊用法
2016/09/07 Python
Python做文本按行去重的实现方法
2016/10/19 Python
把django中admin后台界面的英文修改为中文显示的方法
2019/07/26 Python
python打包成so文件过程解析
2019/09/28 Python
Python语法垃圾回收机制原理解析
2020/03/25 Python
Sentry错误日志监控使用方法解析
2020/11/12 Python
利用纯html5绘制出来的一款非常漂亮的时钟
2015/01/04 HTML / CSS
小学门卫岗位职责
2013/12/17 职场文书
将相和教学反思
2014/02/04 职场文书
学雷锋志愿服务月活动总结
2014/03/09 职场文书
高中课程设置方案
2014/05/28 职场文书
OpenCV-Python实现怀旧滤镜与连环画滤镜
2021/06/09 Python
上个世纪50年代的可穿戴技术:无线电帽子
2022/02/18 无线电
实战 快速定位MySQL的慢SQL
2022/03/22 MySQL