详解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使用循环实现批量创建文件夹示例
Mar 25 Python
python函数局部变量用法实例分析
Aug 04 Python
python字符串的常用操作方法小结
May 21 Python
python主线程捕获子线程的方法
Jun 17 Python
使用Python 正则匹配两个特定字符之间的字符方法
Dec 24 Python
Python GUI编程完整示例
Apr 04 Python
计算机二级python学习教程(1) 教大家如何学习python
May 16 Python
Django项目使用CircleCI的方法示例
Jul 14 Python
python openvc 裁剪、剪切图片 提取图片的行和列
Sep 19 Python
opencv3/python 鼠标响应操作详解
Dec 11 Python
python 在threading中如何处理主进程和子线程的关系
Apr 25 Python
Django中日期时间型字段进行年月日时分秒分组统计
Nov 27 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中file_get_contents()函数用法实例
2019/02/21 PHP
javascript 网页跳转的方法
2008/12/24 Javascript
js DataSet数据源处理代码
2010/03/29 Javascript
打开新窗口关闭当前页面不弹出关闭提示js代码
2013/03/18 Javascript
JavaScript 实现类的多种方法实例
2013/05/01 Javascript
jQuery学习笔记之总体架构
2014/06/03 Javascript
jQuery学习笔记之 Ajax操作篇(一) - 数据加载
2014/06/23 Javascript
使用javascript获取页面名称
2014/12/23 Javascript
bootstrap css样式之表单
2017/01/19 Javascript
JS实现禁止高频率连续点击的方法【基于ES6语法】
2017/04/25 Javascript
深入浅析AngularJS中的一次性数据绑定 (bindonce)
2017/05/11 Javascript
AngularJS  ng-repeat遍历输出的用法
2017/06/19 Javascript
浅谈express 中间件机制及实现原理
2017/08/31 Javascript
webpack+vue2构建vue项目骨架的方法
2018/01/09 Javascript
javascript面向对象三大特征之继承实例详解
2019/07/24 Javascript
微信小程序8种数据通信的方式小结
2020/02/03 Javascript
VUE中使用HTTP库Axios方法详解
2020/02/05 Javascript
Vue微信公众号网页分享的示例代码
2020/05/28 Javascript
Vue单文件组件开发实现过程详解
2020/07/30 Javascript
vue data变量相互赋值后被实时同步的解决步骤
2020/08/05 Javascript
[58:25]VP vs RNG 2019国际邀请赛小组赛 BO2 第一场 8.15
2019/08/17 DOTA
Python 性能优化技巧总结
2016/11/01 Python
Python中单、双下划线的区别总结
2017/12/01 Python
人工神经网络算法知识点总结
2019/06/11 Python
pycharm实现print输出保存到txt文件
2020/06/01 Python
用CSS禁用输入法(CSS3 UI规范)实例解析
2012/12/04 HTML / CSS
英国门把手公司:Door Handle Company
2019/05/12 全球购物
《曹刿论战》教学反思
2014/03/02 职场文书
网络营销策划方案
2014/06/04 职场文书
小学公民道德宣传日活动总结
2015/03/23 职场文书
办公室卫生管理制度
2015/08/04 职场文书
工作转正自我鉴定范文
2019/06/21 职场文书
教你用Java Swing实现自助取款机系统
2021/06/11 Java/Android
python获取对象信息的实例详解
2021/07/07 Python
剑指Offer之Java算法习题精讲二叉树的构造和遍历
2022/03/21 Java/Android
Ruby GDBM操作简介及数据存储原理
2022/04/19 Ruby