详解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操作RabbitMQ服务器消息队列的远程结果返回
Jun 30 Python
Python PyQt4实现QQ抽屉效果
Apr 20 Python
详解Python安装scrapy的正确姿势
Jun 26 Python
Windows系统下PhantomJS的安装和基本用法
Oct 21 Python
python中的tcp示例详解
Dec 09 Python
Django框架实现分页显示内容的方法详解
May 10 Python
Python进程,多进程,获取进程id,给子进程传递参数操作示例
Oct 11 Python
浅谈pytorch卷积核大小的设置对全连接神经元的影响
Jan 10 Python
Django基于客户端下载文件实现方法
Apr 21 Python
python的pip有什么用
Jun 17 Python
django models里数据表插入数据id自增操作
Jul 15 Python
Pygame如何使用精灵和碰撞检测
Nov 17 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 危险函数解释 分析
2009/04/22 PHP
Zend framework处理一个http请求的流程分析
2010/02/08 PHP
php cli 方式 在crotab中运行解决
2010/02/08 PHP
php实现的农历算法实例
2015/08/11 PHP
php文件上传后端处理小技巧
2016/05/22 PHP
javascript 写类方式之七
2009/07/05 Javascript
层序遍历在ExtJs的TreePanel中的应用
2009/10/16 Javascript
js 图片等比例缩放代码
2010/05/13 Javascript
基于jquery的代码显示区域自动拉长效果
2011/12/07 Javascript
各种页面定时跳转(倒计时跳转)代码总结
2013/10/24 Javascript
Nodejs为什么选择javascript为载体语言
2015/01/13 NodeJs
AngularJS快速入门
2015/04/02 Javascript
jQuery焦点图切换特效代码分享
2015/09/15 Javascript
java中String类型变量的赋值问题介绍
2016/03/23 Javascript
Extjs4.0 ComboBox如何实现三级联动
2016/05/11 Javascript
使用PBFunc在Powerbuilder中支付宝当面付款功能
2016/10/01 Javascript
Angular4如何自定义首屏的加载动画详解
2017/07/26 Javascript
Angular中使用better-scroll插件的方法
2018/03/27 Javascript
浅析Proxy可以优化vue的数据监听机制问题及实现思路
2018/11/29 Javascript
vue3实现v-model原理详解
2019/10/09 Javascript
vue 组件开发原理与实现方法详解
2019/11/29 Javascript
[48:26]VGJ.S vs infamous Supermajor 败者组 BO3 第二场 6.4
2018/06/05 DOTA
Python中的包和模块实例
2014/11/22 Python
利用Python脚本生成sitemap.xml的实现方法
2017/01/31 Python
详解Python3 中hasattr()、getattr()、setattr()、delattr()函数及示例代码数
2018/04/18 Python
django 删除数据库表后重新同步的方法
2018/05/27 Python
Python3 tkinter 实现文件读取及保存功能
2019/09/12 Python
Python正则表达式高级使用方法汇总
2020/06/18 Python
python创建文本文件的简单方法
2020/08/30 Python
一张图片能隐含千言万语之隐藏你的程序代码
2012/12/13 HTML / CSS
消防安全管理制度
2014/02/01 职场文书
党的群众路线教育实践活动领导班子整改措施
2014/09/30 职场文书
2015年预算员工作总结
2015/05/14 职场文书
微观世界观后感
2015/06/10 职场文书
Python访问Redis的详细操作
2021/06/26 Python
SQL Server中搜索特定的对象
2022/05/25 SQL Server