详解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学习手册中的python多态示例代码
Jan 21 Python
Python网页解析利器BeautifulSoup安装使用介绍
Mar 17 Python
python模块smtplib学习
May 22 Python
python3.5基于TCP实现文件传输
Mar 20 Python
python 杀死自身进程的实现方法
Jul 01 Python
详解Python 重学requests发起请求的基本方式
Feb 07 Python
python中数据库like模糊查询方式
Mar 02 Python
python GUI库图形界面开发之PyQt5结合Qt Designer创建信号与槽的详细方法与实例
Mar 08 Python
Python selenium自动化测试模型图解
Apr 15 Python
浅析python字符串前加r、f、u、l 的区别
Jan 24 Python
还在手动盖楼抽奖?教你用Python实现自动评论盖楼抽奖(一)
Jun 07 Python
OpenCV图像变换之傅里叶变换的一些应用
Jul 26 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
phpMyAdmin链接MySql错误 个人解决方案
2009/12/28 PHP
php中用加号与用array_merge合并数组的区别深入分析
2013/06/03 PHP
解析PHP实现多进程并行执行脚本
2013/06/18 PHP
PHP缓存集成库phpFastCache用法
2014/12/15 PHP
PHP session文件独占锁引起阻塞问题解决方法
2015/05/12 PHP
php中使用websocket详解
2016/09/23 PHP
php删除txt文件指定行及按行读取txt文档数据的方法
2017/01/30 PHP
laravel开发环境homestead搭建过程详解
2020/07/03 PHP
js的with语句使用方法
2007/09/21 Javascript
3Z版基于jquery的图片复选框(asp.net+jquery)
2010/04/12 Javascript
JavaScript执行顺序详细介绍
2013/12/04 Javascript
JavaScript输入邮箱自动提示实例代码
2014/01/13 Javascript
JavaScript去除数组里重复值的方法
2015/07/13 Javascript
JS结合bootstrap实现基本的增删改查功能
2016/07/22 Javascript
在js中实现邮箱格式的验证方法(推荐)
2016/10/24 Javascript
jQuery+vue.js实现的九宫格拼图游戏完整实例【附源码下载】
2017/09/12 jQuery
vue-router重定向不刷新问题的解决
2018/06/25 Javascript
详解@Vue/Cli 3 Invalid Host header 错误解决办法
2019/01/02 Javascript
JS常用跨域方法实现原理解析
2020/12/09 Javascript
Python 深入理解yield
2008/09/06 Python
Python中如何优雅的合并两个字典(dict)方法示例
2017/08/09 Python
Python使用Tkinter实现机器人走迷宫
2018/01/22 Python
python模块常用用法实例详解
2019/10/17 Python
Django中Aggregation聚合的基本使用方法
2020/07/09 Python
Python 连接 MySQL 的几种方法
2020/09/09 Python
python实现测试工具(一)——命令行发送get请求
2020/10/19 Python
一套软件开发工程师笔试题
2015/05/18 面试题
岗位廉洁从政承诺书
2014/03/27 职场文书
植树节活动总结
2014/04/30 职场文书
企业演讲稿范文大全
2014/05/20 职场文书
廉洁自律演讲稿
2014/05/22 职场文书
道路施工安全责任书
2014/07/24 职场文书
诉讼授权委托书
2014/10/15 职场文书
英语辞职信范文
2015/02/28 职场文书
2015年教学副校长工作总结
2015/07/22 职场文书
深入浅析Redis 集群伸缩原理
2021/05/15 Redis