数据合并:由于数据可能是不同的格式,且来自不同的数据源,为了方便之后的处理与加工,需要将不同的数据转换成一个DataFrame。

  Numpy中的concatenate()、vstack()、hstack()可对数组进行拼接,可参考学习。

  Pandas提供了pd.concat()、pd.merge()、join()、combine_first()等函数对Pandas数据对象进行合并。

在本节中,仅对pd.concat()进行详细讲解。

pd.concat()常用的参数
参数 说明
objs 需连接的对象的列表
axis 轴向连接所沿的轴,默认为0
ignore_index 默认False,当为True时表示不适用连接轴上的索引值,生成的轴标记为0...n-1
keys 序列,默认为None。构建层次化索引,且该索引位于最外层
join 值为'inner'或'outer'(默认'outer')。指定处理其他轴上的索引(并集或交集)
join_axes 指定其他轴上的索引,不执行并集或交集运算

(1)默认连接两个DataFrame对象(默认axis = 0,即上下连接)

  1. >>> import pandas as pd
  2. >>> df1 = pd.DataFrame({'姓名':['钱某','段某'],'年龄':[20,24]},index=[2,3])
  3. >>> df2 = pd.DataFrame({'姓名':['钱某','段某'],'年龄':[20,24]},index=[2,3])
  4. >>> df1
  5. 姓名 年龄
  6. 2 钱某 20
  7. 3 段某 24
  8. >>> df2
  9. 姓名 年龄
  10. 2 钱某 20
  11. 3 段某 24
  12.  
  13. #连接两个对象
  14. >>> pd.concat([df1,df2])
  15. 姓名 年龄
  16. 2 钱某 20
  17. 3 段某 24
  18. 2 钱某 20
  19. 3 段某 24

(2)左右连接两个DataFrame对象

  1. >>> df1 = pd.DataFrame({'年龄':[22,26],'籍贯':['北京','河北']},index=['张某','李某'])
  2. >>> df2 = pd.DataFrame({'身高':[175,180],'体重':[70,85]},index=['张某','李某'])
  3. >>> df1
  4. 年龄 籍贯
  5. 张某 22 北京
  6. 李某 26 河北
  7. >>> df2
  8. 身高 体重
  9. 张某 175 70
  10. 李某 180 85
  11.  
  12. #左右连接
  13. >>> pd.concat([df1,df2],axis=1)
  14. 年龄 籍贯 身高 体重
  15. 张某 22 北京 175 70
  16. 李某 26 河北 180 85

(3)验证ignore_index参数,即将连接后的列名转化为0...n-1

  1. >>> pd.concat([df1,df2],axis=1,ignore_index=True)
  2. 0 1 2 3
  3. 张某 22 北京 175 70
  4. 李某 26 河北 180 85

(4)验证keys参数,即构建层次化索引

  1. >>> pd.concat([df1,df2],axis=1,keys=['df1','df2'])
  2. df1 df2
  3. 年龄 籍贯 身高 体重
  4. 张某 22 北京 175 70
  5. 李某 26 河北 180 85

(5)验证join参数,默认 join = 'outer' ,取并集,不会造成信息的缺失

  1. >>> df3 = pd.DataFrame({'身高':[175,183],'体重':[70,87]},index=['张某','钱某'])
  2. >>> df3
  3. 身高 体重
  4. 张某 175 70
  5. 钱某 183 87
  6.  
  7. #取并集
  8. >>> pd.concat([df1,df3],axis=1)
  9. 年龄 籍贯 身高 体重
  10. 张某 22.0 北京 175.0 70.0
  11. 李某 26.0 河北 NaN NaN
  12. 钱某 NaN NaN 183.0 87.0
  13.  
  14. #取交集
  15. >>> pd.concat([df1,df3],axis=1,join='inner')
  16. 年龄 籍贯 身高 体重
  17. 张某 22 北京 175 70

(6)验证join_axes参数,若只想重用原始DataFrame中的索引,则项 join_axes 传入一个索引对象列表

  1. >>> pd.concat([df1,df3],axis=1)
  2. 年龄 籍贯 身高 体重
  3. 张某 22.0 北京 175.0 70.0
  4. 李某 26.0 河北 NaN NaN
  5. 钱某 NaN NaN 183.0 87.0
  6.  
  7. >>> pd.concat([df1,df3],axis=1,join_axes=[df1.index])
  8. 年龄 籍贯 身高 体重
  9. 张某 22 北京 175.0 70.0
  10. 李某 26 河北 NaN NaN

9-Pandas之数据合并与轴向连接(pd.concat()的详解)的更多相关文章

  1. 给Clouderamanager集群里安装基于Hive的大数据实时分析查询引擎工具Impala步骤(图文详解)

    这个很简单,在集群机器里,选择就是了,本来自带就有Impala的. 扩展博客 给Ambari集群里安装基于Hive的大数据实时分析查询引擎工具Impala步骤(图文详解)

  2. 给Ambari集群里安装基于Hive的大数据实时分析查询引擎工具Impala步骤(图文详解)

    不多说,直接上干货! Impala和Hive的关系(详解) 扩展博客 给Clouderamanager集群里安装基于Hive的大数据实时分析查询引擎工具Impala步骤(图文详解) 参考 horton ...

  3. 利用Python进行数据分析(12) pandas基础: 数据合并

    pandas 提供了三种主要方法可以对数据进行合并: pandas.merge()方法:数据库风格的合并: pandas.concat()方法:轴向连接,即沿着一条轴将多个对象堆叠到一起: 实例方法c ...

  4. 数据分析入门——pandas之数据合并

    主要分为:级联:pd.concat.pd.append 合并:pd.merge 一.numpy级联的回顾 详细参考numpy章节 https://www.cnblogs.com/jiangbei/p/ ...

  5. pandas 之 数据合并

    import numpy as np import pandas as pd Data contained in pandas objects can be combined together in ...

  6. Echarts数据可视化grid直角坐标系(xAxis、yAxis)详解:

    mytextStyle={ color:"#333", //文字颜色 fontStyle:"normal", //italic斜体 oblique倾斜 font ...

  7. 【大数据】Linux下安装Hadoop(2.7.1)详解及WordCount运行

    一.引言 在完成了Storm的环境配置之后,想着鼓捣一下Hadoop的安装,网上面的教程好多,但是没有一个特别切合的,所以在安装的过程中还是遇到了很多的麻烦,并且最后不断的查阅资料,终于解决了问题,感 ...

  8. Pandas 时间序列数据绘制X轴主要刻度和次要刻度

    先上效果图吧(图中Tue表示周二): Pandas和matplotlib.dates都是使用matplotlib.units来定位刻度. matplotlib.dates可以方便的手动设置刻度,同时p ...

  9. Linq 数据合并,比较,连接,交叉 维恩图工具

    Except 返回包含两个不同之处的linq结果集 Intersect 返回两个容器中共同的数据项 Union 返回所有成员,相同的成员出现多次,将只返回一个 Concat 返回所有数据项

随机推荐

  1. visual studio 项目中使用EF创建的数据库,后续更新数据库操作(生产已经部署,不能删除数据库重新创建)

    情景:SharePoint项目(其他类型的项目道理也一样),数据库是用EF(版本:6.0.0.0)创建的,生产环境已经使用,所以后续修改数据库,只能通过更新来实现. 下面是具体的操作方式: 1.vis ...

  2. 用.NET做B/S结构的系统,您是用几种结构来开发,每一层之间的关系以及为什么要这样分层?

    表现层(UI):通俗讲就是展现给用户的界面,即用户在使用一个系统的时候他的所见所得. 业务逻辑层(BLL):针对具体问题的操作,也可以说是对数据层的操作,对数据业务逻辑处理. 数据访问层(DAL):直 ...

  3. Netty源码学习系列之5-NioEventLoop的run方法

    前言     NioEventLoop的run方法,是netty中最核心的方法,没有之一.在该方法中,完成了对已注册的channel上来自底层操作系统的socket事件的处理(在服务端时事件包括客户端 ...

  4. 通过手写服务器的方式,立体学习Http

    前言 Http我们都已经耳熟能详了,而关于Http学习的文章网上有很多,各个知识点的讲解也可说是深入浅出.然而,学习过后,我们对Http还是一知半解.问题出在了哪? Http是一个客户机与服务器之间的 ...

  5. LoadLibraryA与GetProcAddress介绍

    0x00 函数原型 HMODULE LoadLibraryA(     LPCTSTR lpLibFileName//模块的的的名字 ) FARPROC GetProcAddress( HMODULE ...

  6. CCNA-Part5 - 传输层 ,TCP 为什么是三次握手?

    传输层 传输层主要的作用就是建立端到端的连接.比如电脑的微信的通信,就需要跨越多个网络设备(交换机和录取)再和微信的服务器建立连接. 传输层需要具有以下的特点: 会话的多复用:如电脑上开启的多个应用, ...

  7. day64 django模型层

    目录 一.单表操作(增删改) 二.必知必会13个方法 三.查看内部的sql语句的方法 四.神奇的双下划线查询 五.一对多外键的增删改查 六.多对多外键的增删改查 七.正反向查询概念 八.多表查询 1 ...

  8. day39 进程

    目录 一.进程对象的其他方法 二.僵尸进程与孤儿进程(了解) 1 僵尸进程 2 孤儿进程 三.守护进程 四.互斥锁 五.进程间通信 六.IPC机制 七.生产者消费者模型 八.线程理论 一.进程对象的其 ...

  9. js获取div对象几何信息

    /** * @description 获取对象信息: * bottom: 208 * height: 200 (老版本IE不兼容) * width: 200 (老版本IE不兼容) * left: 8 ...

  10. 数据源管理 | 搜索引擎框架,ElasticSearch集群模式

    本文源码:GitHub·点这里 || GitEE·点这里 一.集群环境搭建 1.环境概览 ES版本6.3.2,集群名称esmaster,虚拟机centos7. 服务群 角色划分 说明 en-maste ...