详解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通过post提交数据的方法
May 06 Python
Python 文件管理实例详解
Nov 10 Python
Python的Asyncore异步Socket模块及实现端口转发的例子
Jun 14 Python
利用pyinstaller或virtualenv将python程序打包详解
Mar 22 Python
用python结合jieba和wordcloud实现词云效果
Sep 05 Python
详解python使用Nginx和uWSGI来运行Python应用
Jan 09 Python
Python遍历pandas数据方法总结
Feb 09 Python
python3+PyQt5重新实现QT事件处理程序
Apr 19 Python
Pandas DataFrame 取一行数据会得到Series的方法
Nov 10 Python
关于不懂Chromedriver如何配置环境变量问题解决方法
Jun 12 Python
python批量修改图片尺寸,并保存指定路径的实现方法
Jul 04 Python
解决yum对python依赖版本问题
Jul 05 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权重计算方法代码分享
2014/01/09 PHP
PHP的关于变量和日期处理的一些面试题目整理
2015/08/10 PHP
js 跨域和ajax 跨域问题小结
2009/07/01 Javascript
js中定义一个变量并判断其是否为空的方法
2014/05/13 Javascript
node.js中的path.delimiter方法使用说明
2014/12/09 Javascript
jQuery实现默认是闭合的FAQ展开效果菜单
2015/09/14 Javascript
浅谈Javascript数据属性与访问器属性
2016/07/26 Javascript
Javascript动画效果(3)
2016/10/11 Javascript
JavaScript实现公历转农历功能示例
2017/02/13 Javascript
JQuery Ajax 异步操作之动态添加节点功能
2017/05/24 jQuery
JavaScript输入分钟、秒倒计时技巧总结(附代码)
2017/08/17 Javascript
深入浅出es6模板字符串
2017/08/26 Javascript
vue select组件的使用与禁用实现代码
2018/04/10 Javascript
layui实现文件或图片上传记录
2018/08/28 Javascript
通过说明与示例了解js五种设计模式
2019/06/17 Javascript
react实现antd线上主题动态切换功能
2019/08/12 Javascript
如何使用Jquery动态生成二级选项列表
2020/02/06 jQuery
详解vuejs中执行npm run dev出现页面cannot GET/问题
2020/04/26 Javascript
Vue如何基于vue-i18n实现多国语言兼容
2020/07/17 Javascript
vue 实现锚点功能操作
2020/08/10 Javascript
如何在vue中使用video.js播放m3u8格式的视频
2021/02/01 Vue.js
python实现ID3决策树算法
2018/08/29 Python
解决sublime+python3无法输出中文的问题
2018/12/12 Python
解决python 3 urllib 没有 urlencode 属性的问题
2019/08/22 Python
Django框架 信号调度原理解析
2019/09/04 Python
Python 3.8 新功能大揭秘【新手必学】
2020/02/05 Python
公认8个效率最高的爬虫框架
2020/07/28 Python
Avène雅漾美国官方网站:敏感肌肤护理专家
2016/10/24 全球购物
Perfume’s Club英国官网:购买香水和护肤品
2019/11/02 全球购物
《美丽的小路》教学反思
2014/02/26 职场文书
幼儿园教师演讲稿
2014/05/06 职场文书
购房意向书
2014/08/30 职场文书
工资收入证明样本(5篇)
2014/09/16 职场文书
红领巾广播站广播稿(3篇)
2014/09/20 职场文书
金榜题名主持词
2015/07/02 职场文书
Lombok的详细使用及优缺点总结
2021/07/15 Java/Android