9-Pandas之数据合并与轴向连接(pd.concat()的详解)
数据合并:由于数据可能是不同的格式,且来自不同的数据源,为了方便之后的处理与加工,需要将不同的数据转换成一个DataFrame。
Numpy中的concatenate()、vstack()、hstack()可对数组进行拼接,可参考学习。
Pandas提供了pd.concat()、pd.merge()、join()、combine_first()等函数对Pandas数据对象进行合并。
在本节中,仅对pd.concat()进行详细讲解。
| 参数 | 说明 |
| objs | 需连接的对象的列表 |
| axis | 轴向连接所沿的轴,默认为0 |
| ignore_index | 默认False,当为True时表示不适用连接轴上的索引值,生成的轴标记为0...n-1 |
| keys | 序列,默认为None。构建层次化索引,且该索引位于最外层 |
| join | 值为'inner'或'outer'(默认'outer')。指定处理其他轴上的索引(并集或交集) |
| join_axes | 指定其他轴上的索引,不执行并集或交集运算 |
(1)默认连接两个DataFrame对象(默认axis = 0,即上下连接)
>>> import pandas as pd
>>> df1 = pd.DataFrame({'姓名':['钱某','段某'],'年龄':[20,24]},index=[2,3])
>>> df2 = pd.DataFrame({'姓名':['钱某','段某'],'年龄':[20,24]},index=[2,3])
>>> df1
姓名 年龄
2 钱某 20
3 段某 24
>>> df2
姓名 年龄
2 钱某 20
3 段某 24 #连接两个对象
>>> pd.concat([df1,df2])
姓名 年龄
2 钱某 20
3 段某 24
2 钱某 20
3 段某 24
(2)左右连接两个DataFrame对象
>>> df1 = pd.DataFrame({'年龄':[22,26],'籍贯':['北京','河北']},index=['张某','李某'])
>>> df2 = pd.DataFrame({'身高':[175,180],'体重':[70,85]},index=['张某','李某'])
>>> df1
年龄 籍贯
张某 22 北京
李某 26 河北
>>> df2
身高 体重
张某 175 70
李某 180 85
#左右连接
>>> pd.concat([df1,df2],axis=1)
年龄 籍贯 身高 体重
张某 22 北京 175 70
李某 26 河北 180 85
(3)验证ignore_index参数,即将连接后的列名转化为0...n-1
>>> pd.concat([df1,df2],axis=1,ignore_index=True)
0 1 2 3
张某 22 北京 175 70
李某 26 河北 180 85
(4)验证keys参数,即构建层次化索引
>>> pd.concat([df1,df2],axis=1,keys=['df1','df2'])
df1 df2
年龄 籍贯 身高 体重
张某 22 北京 175 70
李某 26 河北 180 85
(5)验证join参数,默认 join = 'outer' ,取并集,不会造成信息的缺失
>>> df3 = pd.DataFrame({'身高':[175,183],'体重':[70,87]},index=['张某','钱某'])
>>> df3
身高 体重
张某 175 70
钱某 183 87
#取并集
>>> pd.concat([df1,df3],axis=1)
年龄 籍贯 身高 体重
张某 22.0 北京 175.0 70.0
李某 26.0 河北 NaN NaN
钱某 NaN NaN 183.0 87.0
#取交集
>>> pd.concat([df1,df3],axis=1,join='inner')
年龄 籍贯 身高 体重
张某 22 北京 175 70
(6)验证join_axes参数,若只想重用原始DataFrame中的索引,则项 join_axes 传入一个索引对象列表
>>> pd.concat([df1,df3],axis=1)
年龄 籍贯 身高 体重
张某 22.0 北京 175.0 70.0
李某 26.0 河北 NaN NaN
钱某 NaN NaN 183.0 87.0 >>> pd.concat([df1,df3],axis=1,join_axes=[df1.index])
年龄 籍贯 身高 体重
张某 22 北京 175.0 70.0
李某 26 河北 NaN NaN
9-Pandas之数据合并与轴向连接(pd.concat()的详解)的更多相关文章
- 给Clouderamanager集群里安装基于Hive的大数据实时分析查询引擎工具Impala步骤(图文详解)
这个很简单,在集群机器里,选择就是了,本来自带就有Impala的. 扩展博客 给Ambari集群里安装基于Hive的大数据实时分析查询引擎工具Impala步骤(图文详解)
- 给Ambari集群里安装基于Hive的大数据实时分析查询引擎工具Impala步骤(图文详解)
不多说,直接上干货! Impala和Hive的关系(详解) 扩展博客 给Clouderamanager集群里安装基于Hive的大数据实时分析查询引擎工具Impala步骤(图文详解) 参考 horton ...
- 利用Python进行数据分析(12) pandas基础: 数据合并
pandas 提供了三种主要方法可以对数据进行合并: pandas.merge()方法:数据库风格的合并: pandas.concat()方法:轴向连接,即沿着一条轴将多个对象堆叠到一起: 实例方法c ...
- 数据分析入门——pandas之数据合并
主要分为:级联:pd.concat.pd.append 合并:pd.merge 一.numpy级联的回顾 详细参考numpy章节 https://www.cnblogs.com/jiangbei/p/ ...
- pandas 之 数据合并
import numpy as np import pandas as pd Data contained in pandas objects can be combined together in ...
- Echarts数据可视化grid直角坐标系(xAxis、yAxis)详解:
mytextStyle={ color:"#333", //文字颜色 fontStyle:"normal", //italic斜体 oblique倾斜 font ...
- 【大数据】Linux下安装Hadoop(2.7.1)详解及WordCount运行
一.引言 在完成了Storm的环境配置之后,想着鼓捣一下Hadoop的安装,网上面的教程好多,但是没有一个特别切合的,所以在安装的过程中还是遇到了很多的麻烦,并且最后不断的查阅资料,终于解决了问题,感 ...
- Pandas 时间序列数据绘制X轴主要刻度和次要刻度
先上效果图吧(图中Tue表示周二): Pandas和matplotlib.dates都是使用matplotlib.units来定位刻度. matplotlib.dates可以方便的手动设置刻度,同时p ...
- Linq 数据合并,比较,连接,交叉 维恩图工具
Except 返回包含两个不同之处的linq结果集 Intersect 返回两个容器中共同的数据项 Union 返回所有成员,相同的成员出现多次,将只返回一个 Concat 返回所有数据项
随机推荐
- SpringMvc流程分析,简单源码分析
SpringMvc的请求入口:web.xml中的DispatcherServlet <servlet> <servlet-name>springServlet</serv ...
- 【一】美化Linux终端之oh-my-zsh开源项目
目录 1.查看系统是否装了zsh 2.安装zsh(系统没有查到zsh,则安装) 3.切换shell为zsh 4.重启Linux 5.安装oh my zsh 6.到此就安装完成 7.更换主题 8.生效主 ...
- SCOI 2010 连续攻击游戏(贪心,图论)
SCOI 2010 连续攻击游戏 solution 直接就硬刚 我愿称贪心为暴力 因为题目中要求一定从小到大贪心,那么当前点的下标有能够选取的较大点,那么它一定可以和前面的一个较小点连接,所以可以直接 ...
- 微服务框架Demo.MicroServer运行手册
一.背景说明: 之前分享过一个微服务开发框架, "享一个集成.NET Core+Swagger+Consul+Polly+Ocelot+IdentityServer4+Exceptionle ...
- Dot Net Core中间件内部运行机制
public void Configure(IApplicationBuilder app, IWebHostEnvironment env) { if (env.IsDevelopment()) { ...
- springbean 生命周期
springbean 和java对象得区别: 1.对象:任何符合java语法规则实例化出来的对象 2.springbean: 是spring对普通对象进行了封装为BeanDefinition,bean ...
- day82 序列化器-Serializer
目录 一.序列化器的基本功能 二.定义序列化器 三.创建Serializers对象 四.序列化器的使用 1 序列化 2 反序列化 2.1 数据验证(类比forms组件) 2.2 数据保存 一.序列化器 ...
- day20 函数收尾+面向过程+模块
目录 一.算法(二分法) 二.面向过程与函数式 1 编程范式/思想 2 面向过程 3 函数式 3.1 匿名函数与lambda 三.模块 1 什么是模块 2 为何要有模块 3 怎么用模块 3.1第一次导 ...
- 深入理解JVM(③)线程与Java的线程
前言 我们都知道,线程是比进程更轻量级的调度执行单位,线程的引入,可以把一个进程的资源分配和执行调度分开,各个线程既可以共享进程资源调度(内存地址.文件I/O等),又可以独立调度. 线程的实现 主流的 ...
- Scala 基础(十):Scala 函数式编程(二)基础(二)过程、惰性函数、异常
1 过程 将函数的返回类型为Unit的函数称之为过程(procedure),如果明确函数没有返回值,那么等号可以省略 注意事项和细节说明 1)注意区分: 如果函数声明时没有返回值类型,但是有 = 号, ...