详解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环境下搭建属于自己的pip源的教程
May 05 Python
Python解决N阶台阶走法问题的方法分析
Dec 28 Python
Python 数据处理库 pandas 入门教程基本操作
Apr 19 Python
python3处理含有中文的url方法
May 10 Python
pycharm打开命令行或Terminal的方法
Jan 16 Python
在Qt5和PyQt5中设置支持高分辨率屏幕自适应的方法
Jun 18 Python
python内置函数sorted()用法深入分析
Oct 08 Python
python基于property()函数定义属性
Jan 22 Python
python程序文件扩展名知识点详解
Feb 27 Python
python实现控制台输出彩色字体
Apr 05 Python
关于python的缩进规则的知识点详解
Jun 22 Python
python中os.path.join()函数实例用法
May 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
PHP开发文件系统实例讲解
2006/10/09 PHP
php获取twitter最新消息的方法
2015/04/14 PHP
PHP附件下载中文名称乱码的解决方法
2015/12/17 PHP
yii2利用自带UploadedFile实现上传图片的示例
2017/02/16 PHP
PHP提取字符串中的手机号正则表达式怎么写
2017/07/17 PHP
JS实现打开本地文件或文件夹
2021/03/09 Javascript
制作高质量的JQuery Plugin 插件的方法
2010/04/20 Javascript
jquery不会自动回收xmlHttpRequest对象 导致了内存溢出
2012/06/18 Javascript
JS实现悬浮移动窗口(悬浮广告)的特效
2013/03/12 Javascript
SeaJS入门教程系列之使用SeaJS(二)
2014/03/03 Javascript
jquery自动填充勾选框即把勾选框打上true
2014/03/24 Javascript
实例讲解避免javascript冲突的方法
2016/01/03 Javascript
fullpage.js全屏滚动插件使用实例
2016/09/06 Javascript
jQuery中值得注意的trigger方法浅析
2016/12/12 Javascript
Bootstrap如何激活导航状态
2017/03/22 Javascript
javascript 的变量、作用域和内存问题
2017/04/19 Javascript
Vue中对比scoped css和css module的区别
2018/05/17 Javascript
iview实现图片上传功能
2020/06/29 Javascript
vue实现验证用户名是否可用
2021/01/20 Vue.js
Python操作MySQL数据库的三种方法总结
2018/01/30 Python
使用python将时间转换为指定的格式方法
2018/11/12 Python
Matplotlib中文乱码的3种解决方案
2018/11/15 Python
关于python字符串方法分类详解
2019/08/20 Python
Python 实现将大图切片成小图,将小图组合成大图的例子
2020/03/14 Python
python 追踪except信息方式
2020/04/25 Python
python实现磁盘日志清理的示例
2020/11/05 Python
沃尔玛加拿大:Walmart.ca
2020/03/02 全球购物
自荐信格式的六要素
2013/09/21 职场文书
高三学习决心书
2014/03/11 职场文书
工作说明书格式
2014/07/29 职场文书
2014年药剂科工作总结
2014/11/26 职场文书
分析MySQL抛出异常的几种常见解决方式
2021/05/18 MySQL
Spring Data JPA的Audit功能审计数据库的变更
2021/06/26 Java/Android
HTML常用标签超详细整理
2022/03/19 HTML / CSS
「我的青春恋爱物语果然有问题。-妄言录-」第20卷封面公开
2022/03/21 日漫
Pandas数据结构之Series的使用
2022/03/31 Python