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 返回所有数据项
随机推荐
- 「疫期集训day12」阴雨
我们走进了泥泞的雨林----阿尔贡森林里艰难前进的士兵 今天考试一般,T1T2签到题没啥好说的,剩下三个小时全肛T3(我脑子有泡,前几天刚做了一道类似T4的难题,公式更难推),9:00->10: ...
- Creator填色游戏的一种实现方案
前言 先上一个辛苦弄出来的gif效果.写公众号时间不长,很多技巧还在慢慢跟小伙伴学习.可关注公众号,回复"绘图"或者"填色"都可获得demo的git地址.请使用 ...
- 管理用户和组 、 tar备份与恢复 、 cron计划任务-云计算学习(4)
配置用户和组账号 问题 本例要求创建下列用户.组以及组的成员关系: 新建用户 alex,其用户ID为3456,密码是flectrag 创建一个名为 adminuser 的组 创建一个名为 natash ...
- 浏览器如何解析css选择器?
浏览器会『从右往左』解析CSS选择器. 我们知道DOM Tree与Style Rules合成为 Render Tree,实际上是需要将Style Rules附着到DOM Tree上, 因此需要根据选择 ...
- 微信支付之获取code
微信支付之获取code, 1:访问下面的连接(自己拼) 2:去回调地址里拿code https://open.weixin.qq.com/connect/oauth2/authorize?appid= ...
- MCU 51-2 LED and Digital tube Test
点亮LED实验: #include <reg52.h> sbit LED1 = P1^; sbit LED2 = P1^; sbit LED8 = P1^; void main() { L ...
- Maven 专题(七):常用命令
mvn archetype:generate : 反向生成项目的骨架 mvn clean: 清除各个模块target目录及里面的内容 mvn compile: 静态编译,根据xx.java生成xx.c ...
- Unity-内存
editor 和runtime的内存管理分开的 unity检测不到native内存容量 如c++,lua 一个asset一个ab的问题在于 每个asset都有对应的文件头,并不划算 IL2CPP抛弃了 ...
- Vue你不得不知道的异步更新机制和nextTick原理
前言 异步更新是 Vue 核心实现之一,在整体流程中充当着 watcher 更新的调度者这一角色.大部分 watcher 更新都会经过它的处理,在适当时机让更新有序的执行.而 nextTick 作为异 ...
- bzoj4512[Usaco2016 Jan] Build Gates
bzoj4512[Usaco2016 Jan] Build Gates 题意: 某人从农场的(0,0)出发,沿边界到处乱走,走过的地方会留下栅栏,等走完后问要在多少个栅栏上开门才能使整个农场连通,最多 ...