详解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 相关文章推荐
Pycharm学习教程(1) 定制外观
May 02 Python
Python文件常见操作实例分析【读写、遍历】
Dec 10 Python
python导入pandas具体步骤方法
Jun 23 Python
Python socket聊天脚本代码实例
Jan 02 Python
python对数组进行排序,并输出排序后对应的索引值方式
Feb 28 Python
Python实现在Windows平台修改文件属性
Mar 05 Python
基于python实现检索标记敏感词并输出
May 07 Python
Python Dict找出value大于某值或key大于某值的所有项方式
Jun 05 Python
python名片管理系统开发
Jun 18 Python
Python-openpyxl表格读取写入的案例详解
Nov 02 Python
利用Python实现自动扫雷小脚本
Dec 17 Python
PyQt实现计数器的方法示例
Jan 18 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的库,结果发现很多东西
2006/12/31 PHP
php开发环境配置记录
2011/01/14 PHP
PHP 设计模式之观察者模式介绍
2012/02/22 PHP
PHP 获取指定地区的天气实例代码
2017/02/08 PHP
PHP格式化显示时间date()函数代码
2018/10/03 PHP
深入学习微信网址链接解封的防封原理visit_type
2019/08/15 PHP
PHP 图片处理
2020/09/16 PHP
js 颜色选择器(兼容firefox)
2009/03/05 Javascript
关于全局变量和局部变量的那些事
2013/01/11 Javascript
动态加载dtree.js树treeview(示例代码)
2013/12/17 Javascript
jQuery实现视频作为全屏幕背景
2014/12/18 Javascript
JavaScript中的比较操作符>、=、
2014/12/31 Javascript
JavaScript学习笔记之Function对象
2015/01/22 Javascript
javascript设置页面背景色及背景图片的方法
2015/12/29 Javascript
js给table赋值的实例代码
2016/10/13 Javascript
Node.js 基础教程之全局对象
2017/08/06 Javascript
vue使用ajax获取后台数据进行显示的示例
2018/08/09 Javascript
深入了解响应式React Native Echarts组件
2019/05/29 Javascript
python根据出生日期获得年龄的方法
2015/03/31 Python
Python实现将罗马数字转换成普通阿拉伯数字的方法
2017/04/19 Python
Python2.7基于笛卡尔积算法实现N个数组的排列组合运算示例
2017/11/23 Python
10个Python面试常问的问题(小结)
2019/11/20 Python
python实现密码验证合格程序的思路详解
2020/06/01 Python
印尼最大的网上书店:Gramedia.com
2018/09/13 全球购物
北京麒麟网信息技术有限公司网络游戏测试面试题
2013/09/28 面试题
小学教师的个人自我鉴定
2013/10/24 职场文书
新护士岗前培训制度
2014/02/02 职场文书
中学家长会邀请函
2014/02/03 职场文书
公司授权委托书格式范文
2014/10/02 职场文书
2014年党员发展工作总结
2014/12/02 职场文书
儿园租房协议书范本
2014/12/02 职场文书
班主任自我评价范文
2015/03/11 职场文书
python 如何做一个识别率百分百的OCR
2021/05/29 Python
React forwardRef的使用方法及注意点
2021/06/13 Javascript
MySQL笔记 —SQL运算符
2022/01/18 MySQL