详解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 30 Python
Python性能优化的20条建议
Oct 25 Python
python3中set(集合)的语法总结分享
Mar 24 Python
Python下载网络文本数据到本地内存的四种实现方法示例
Feb 05 Python
python实现word 2007文档转换为pdf文件
Mar 15 Python
Python3实现的简单验证码识别功能示例
May 02 Python
Python地图绘制实操详解
Mar 04 Python
python安装requests库的实例代码
Jun 25 Python
Python数据可视化:饼状图的实例讲解
Dec 07 Python
python 爬取古诗文存入mysql数据库的方法
Jan 08 Python
Numpy ndarray 多维数组对象的使用
Feb 10 Python
理解python中装饰器的作用
Jul 21 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版网站缓存加快打开速度的方法分享
2012/06/03 PHP
PHP迭代器实现斐波纳契数列的函数
2013/11/12 PHP
CI框架封装的常用图像处理方法(缩略图,水印,旋转,上传等)
2016/11/22 PHP
PHP上传文件及图片到七牛的方法
2018/07/25 PHP
根据地区不同显示时间的javascript代码
2007/08/13 Javascript
javascript html 静态页面传参数
2009/04/10 Javascript
JS去除iframe滚动条的方法
2015/04/01 Javascript
实例讲解JS中setTimeout()的用法
2016/01/28 Javascript
JavaScript操作表单实例讲解(上)
2016/06/20 Javascript
关于JS变量和作用域详解
2016/07/28 Javascript
Bootstrap 源代码分析(未完待续)
2016/08/17 Javascript
jQuery动态追加页面数据以及事件委托详解
2017/05/06 jQuery
Jquery+Ajax+xml实现中国地区选择三级联动菜单效果(推荐)
2017/06/09 jQuery
对于js垃圾回收机制的理解
2017/09/14 Javascript
10行原生JS实现文字无缝滚动(超简单)
2018/01/02 Javascript
vue watch自动检测数据变化实时渲染的方法
2018/01/16 Javascript
js点击事件的执行过程实例分析【冒泡与捕获】
2020/04/11 Javascript
python翻译软件实现代码(使用google api完成)
2013/11/26 Python
Python中的列表知识点汇总
2015/04/14 Python
Python自动生产表情包
2017/03/17 Python
Python实现按逗号分隔列表的方法
2018/10/23 Python
python实现三维拟合的方法
2018/12/29 Python
python基于itchat模块实现微信防撤回
2019/04/29 Python
Python解释器及PyCharm工具安装过程
2020/02/26 Python
python脚本使用阿里云slb对恶意攻击进行封堵的实现
2021/02/04 Python
HTML5未来发展趋势
2016/02/01 HTML / CSS
亚洲在线旅行门户网站:Expedia.com.hk(智游网)
2020/04/14 全球购物
Roxy俄罗斯官方网站:冲浪和滑雪板的一切
2020/06/20 全球购物
Java基础面试题
2014/07/19 面试题
教师绩效考核方案
2014/01/21 职场文书
孝敬父母的演讲稿
2014/05/14 职场文书
2015世界地球日活动总结
2015/02/09 职场文书
高考百日冲刺决心书
2015/09/23 职场文书
护士工作心得体会
2016/01/25 职场文书
解决Tkinter中button按钮未按却主动执行command函数的问题
2021/05/23 Python
angular4实现带搜索的下拉框
2022/03/25 Javascript