-
Pandas中DataFrame数据合并、连接(concat、merge、join)
2018-06-23 18:46:37最近在工作中,遇到了数据合并、连接的问题,故整理如下,供需要者参考~一、concat:沿着一条轴,将多个对象堆叠到一起 concat方法相当于数据库中的全连接(union all),它不仅可以指定连接的方式(outer join或...最近在工作中,遇到了数据合并、连接的问题,故整理如下,供需要者参考~
一、concat:沿着一条轴,将多个对象堆叠到一起
concat方法相当于数据库中的全连接(union all),它不仅可以指定连接的方式(outer join或inner join)还可以指定按照某个轴进行连接。与数据库不同的是,它不会去重,但是可以使用drop_duplicates方法达到去重的效果。
concat(objs, axis=0, join='outer', join_axes=None, ignore_index=False, keys=None, levels=None, names=None, verify_integrity=False, copy=True):
pd.concat()只是单纯的把两个表拼接在一起,参数axis是关键,它用于指定是行还是列,axis默认是0。当axis=0时,pd.concat([obj1, obj2])的效果与obj1.append(obj2)是相同的;当axis=1时,pd.concat([obj1, obj2], axis=1)的效果与pd.merge(obj1, obj2, left_index=True, right_index=True, how='outer')是相同的。merge方法的介绍请参看下文。
参数介绍:
objs:需要连接的对象集合,一般是列表或字典;
axis:连接轴向;
join:参数为‘outer’或‘inner’;
join_axes=[]:指定自定义的索引;
keys=[]:创建层次化索引;
ignore_index=True:重建索引
举例:
df1=DataFrame(np.random.randn(3,4),columns=['a','b','c','d']) df2=DataFrame(np.random.randn(2,3),columns=['b','d','a']) pd.concat([df1,df2]) a b c d 0 -0.848557 -1.163877 -0.306148 -1.163944 1 1.358759 1.159369 -0.532110 2.183934 2 0.532117 0.788350 0.703752 -2.620643 0 -0.316156 -0.707832 NaN -0.416589 1 0.406830 1.345932 NaN -1.874817 pd.concat([df1,df2],ignore_index=True) a b c d 0 -0.848557 -1.163877 -0.306148 -1.163944 1 1.358759 1.159369 -0.532110 2.183934 2 0.532117 0.788350 0.703752 -2.620643 3 -0.316156 -0.707832 NaN -0.416589 4 0.406830 1.345932 NaN -1.874817
二、merge:通过键拼接列
类似于关系型数据库的连接方式,可以根据一个或多个键将不同的DatFrame连接起来。该函数的典型应用场景是,针对同一个主键存在两张不同字段的表,根据主键整合到一张表里面。
merge(left, right, how='inner', on=None, left_on=None, right_on=None, left_index=False, right_index=False, sort=True, suffixes=('_x', '_y'), copy=True, indicator=False)
参数介绍:
left和right:两个不同的DataFrame;
how:连接方式,有inner、left、right、outer,默认为inner;
on:指的是用于连接的列索引名称,必须存在于左右两个DataFrame中,如果没有指定且其他参数也没有指定,则以两个DataFrame列名交集作为连接键;
left_on:左侧DataFrame中用于连接键的列名,这个参数左右列名不同但代表的含义相同时非常的有用;
right_on:右侧DataFrame中用于连接键的列名;
left_index:使用左侧DataFrame中的行索引作为连接键;
right_index:使用右侧DataFrame中的行索引作为连接键;
sort:默认为True,将合并的数据进行排序,设置为False可以提高性能;
suffixes:字符串值组成的元组,用于指定当左右DataFrame存在相同列名时在列名后面附加的后缀名称,默认为('_x', '_y');
copy:默认为True,总是将数据复制到数据结构中,设置为False可以提高性能;
indicator:显示合并数据中数据的来源情况
举例:
# 1.默认以重叠的列名当做连接键。 df1=DataFrame({'key':['a','b','b'],'data1':range(3)}) df2=DataFrame({'key':['a','b','c'],'data2':range(3)}) pd.merge(df1,df2) #没有指定连接键,默认用重叠列名,没有指定连接方式 data1 key data2 0 0 a 0 1 1 b 1 2 2 b 1 # 2.默认做inner连接(取key的交集),连接方式还有(left,right,outer),制定连接方式加参数:how='' pd.merge(df2,df1) data2 key data1 0 0 a 0 1 1 b 1 2 1 b 2 #默认内连接,可以看见c没有连接上。 pd.merge(df2,df1,how='left') #通过how,指定连接方式 data2 key data1 0 0 a 0 1 1 b 1 2 1 b 2 3 2 c NaN # 3.多键连接时将连接键组成列表传入,例:pd.merge(df1,df2,on=['key1','key2'] right=DataFrame({'key1':['foo','foo','bar','bar'], 'key2':['one','one','one','two'], 'lval':[4,5,6,7]}) left=DataFrame({'key1':['foo','foo','bar'], 'key2':['one','two','one'], 'lval':[1,2,3]}) right=DataFrame({'key1':['foo','foo','bar','bar'], 'key2':['one','one','one','two'], 'lval':[4,5,6,7]}) pd.merge(left,right,on=['key1','key2'],how='outer') #传出数组 key1 key2 lval_x lval_y 0 foo one 1 4 1 foo one 1 5 2 foo two 2 NaN 3 bar one 3 6 4 bar two NaN 7 # 4.如果两个对象的列名不同,可以分别指定,例:pd.merge(df1,df2,left_on='lkey',right_on='rkey') df3=DataFrame({'key3':['foo','foo','bar','bar'], #将上面的right的key 改了名字 'key4':['one','one','one','two'], 'lval':[4,5,6,7]}) pd.merge(left,df3,left_on='key1',right_on='key3') #键名不同的连接 key1 key2 lval_x key3 key4 lval_y 0 foo one 1 foo one 4 1 foo one 1 foo one 5 2 foo two 2 foo one 4 3 foo two 2 foo one 5 4 bar one 3 bar one 6 5 bar one 3 bar two 7
三、join:主要用于索引上的合并
join(self, other, on=None, how='left', lsuffix='', rsuffix='',sort=False):
其参数的意义与merge方法中的参数意义基本一样。
-
git 几个commit点合并成一个commit点
2018-09-07 00:32:32你自己觉得代码没问题了,就本地commit,然后提交代码,在gitlab上发起和并请求,老大看完之后,觉得你还有修改的地方,把你的代码打回来重新修改,改完之后,本地commit,推到远程,再次发起合并。到此功能做完,...在用git做版本控制器的时候,经常会遇到以下情况:
1、在做1个功能的时候,你自己觉得代码没问题了,就本地commit,然后提交代码,在gitlab上发起和并请求,老大看完之后,觉得你还有修改的地方,把你的代码打回来重新修改,改完之后,本地commit,推到远程,再次发起合并。到此功能做完,但是做完之后发现,你的一个功能commit了两次,当然根据实际情况有些时候你为了做一个功能,来回不止两次,这样子的提交会让这个分支看起来有点杂乱。那么你会想要将你的几次commit合并成一个commit后,再提交,那样子分支看上去会非常清爽。
2、当你做功能的时候,你会遇到需要零时提交的情况(比如你在做A任务,突然来了B任务,在你A任务分支上你会先commit一次,等B任务做完,再回来继续做A,做完之后会再次commit),此时你的一个任务有会有多个commit存在。
本文的主要目的是教你怎样将git中多次commit合并成一个commit。
(1)git log看一下当前分支的提交情况,下图中有三个commit点。从先到后是:add 1 line,add 2 line, add 3 line。需求是:把add 2 line, add 3 line这两个commit点合并成一个commit点。
(2)开始合并,敲下面这个命令:这里面的commitId是你要合并的两个commit后所形成的一个commitId需要跟着的commitId。在这边也就是add 1 line的commitId.
git rebase -i commitId
其中,-i 的参数是不需要合并的 commit 的 hash 值,这里指的是第一条 commit, 接着我们就进入到 vi 的编辑模式
进入vi模式后,在键盘上敲i键进入insert模式。这时候先看看这里面的东西是什么含义,
- pick 的意思是要会执行这个 commit
- squash 的意思是这个 commit 会被合并到前一个commit
我们这边需要将"add 3 line"这个commit合并前前一个commit,也就是合并到“add 2 line”的commit中,那就需要修改成如下的:
修改完成后,按esc键,冒号,输入wq进行保存。之后会继续跳转到commit message 的编辑界面:
注释中有写第一个commit信息和第二个commit信息,现在需要你合并这两个信息成一个commit信息。我这边合并成如下信息:
然后你就保存退出,跳回到最初的命令界面:
看到successfully的字样就说明成功了。再git log看一下commit情况:
从图中就看到已经将add 2 line和add 3 line的commit合并成了this is combination of 2 commit。
如果有对云原生和golang感兴趣的小伙伴可以关注我的公众号“云原生手记”,欢迎批评指正
-
git合并分支
2019-08-29 20:50:22在开发的过程中我们一般会有开发分支和线上的主分支,我们一般都是在开发分支去进行开发项目,等指定功能或迭代都实现后才会合并开发分支到主分支上。那么我们今天就来分享如何合并分支。 git 合并分支到master 假如...在开发的过程中我们一般会有开发分支和线上的主分支,我们一般都是在开发分支去进行开发项目,等指定功能或迭代都实现后才会合并开发分支到主分支上。那么我们今天就来分享如何合并分支。
场景:
git 合并分支到master实际场景:
假如我们现在在dev分支上,刚开发完项目,执行了下列命令$ git add . $ git commit -m 'dev' $ git push -u origin dev
然后我们要把dev分支的代码合并到master分支上 该如何?
1. 首先切换到master分支上
$ git checkout master
如果是多人开发的话 需要把远程master上的代码pull下来
$ git pull origin master
如果是自己一个开发就没有必要了,但是为了保险起见还是pull一下
2.然后我们把dev分支的代码合并到master上
$ git merge dev
3.然后查看状态
$ git status
$ On branch master $ Your branch is ahead of 'origin/master' by 12 commits. $ (use "git push" to publish your local commits) $ nothing to commit, working tree clean
上面的意思就是你有12个commit,需要push到远程master上
4.执行下面命令即可
$ git push origin master
这样就可以了
使用webstrom编辑器的朋友可以不用敲命令,直接用编辑器就好了
第一步:
第二步:
第三步:
如果有冲突就解决冲突就好了,注意:如果后面的分支显示有一个上箭头那就是那个分支还有代码没有上传
如果后面的分支显示有一个下箭头那就是那个分支还有代码需要更新下来,需要使用ctrl + t拉取最新代码。 -
union 和 union all (记录合并)
2018-12-10 13:45:19如果合并没有刻意要删除重复行,那么就使用Union All 两个要联合的SQL语句字段个数必须一样,而且字段类型要“相容”(一致); 如果我们需要将两个select语句的结果作为一个整体显示出来,我们就需要用到union或者...
简介
如果我们需要将两个select语句的结果作为一个整体显示出来,我们就需要用到union或者union all关键字。union(或称为联合)的作用是将多个结果合并在一起显示出来。
Union因为要进行重复值扫描,所以效率低。
如果合并没有刻意要删除重复行,那么就使用Union All
两个要联合的SQL语句字段个数必须一样,而且字段类型要“相容”(一致)区别
:- Union:对两个结果集进行并集操作,不包括重复行,同时进行默认规则的排序;
- Union All:对两个结果集进行并集操作,包括重复行,不进行排序;
- Intersect:对两个结果集进行交集操作,不包括重复行,同时进行默认规则的排序;
- Minus:对两个结果集进行差操作,不包括重复行,同时进行默认规则的排序。
可以在最后一个结果集中指定Order by子句改变排序方式。
语法
- union 语法:(去重、默认规则排序)
select employee_id,job_id from employees union select employee_id,job_id from job_history
- union all 语法
select employee_id,job_id from employees union all select employee_id,job_id from job_history
注意事项
-
union 和 union all都可以将多个结果集合并,而不仅仅是两个,你可以将多个结果集串起来。
-
使用union和union all必须保证各个select 集合的结果有相同个数的列,并且每个列的类型是一样的。但列名则不一定需要相同,oracle会将第一个结果的列名作为结果集的列名。例如下面是一个例子:
select empno,ename from emp union select deptno,dname from dept
- 没有必要在每一个select结果集中使用order by子句来进行排序,我们可以在最后使用一条order by来对整个结果进行排序。例如:
select empno,ename from emp union select deptno,dname from dept order by ename;
-
合并分支到master上
2017-10-09 19:33:19git push -u origin dev然后我们要把dev分支的代码合并到master分支上 该如何? 首先切换到master分支上git checkout master如果是多人开发的话 需要把远程master上的代码pull下来git pull origin mas -
element-ui表格el-table动态合并单元格(合并行合并列)怎么合并
2020-05-29 15:13:00element-ui表格el-table动态 合并行和合并列怎么合并 -
Git合并远程分支
2018-07-08 21:20:46众所周知,Git在代码管理方面做的十分的灵活来适应各种各样的版本(正常版本,修复Bug版本等)迭代,业界一般遵从的原则:利用分支进行版本迭代,开发完并测试完后,会将代码合并到master分支,然后进行上线;... -
Element表格之表头合并、行合并和列合并
2020-07-14 16:17:13文章目录一、合并表头二、合并表格行三、合并表格列 最近写vue开发项目的时候,很多地方用到了Element组件中的Table 表格。经过一周的边学边做,我总结了以下三种有关表格的合并方法。 一、合并表头 话不多说,先看... -
git 分支合并主干、主干合并分支
2018-06-13 21:06:27git 分支合并主干、主干合并分支 1、分支合并主干 branch为分支名称 进入分支,更新分支代码 (branch)git pull; 切换主干 (branch)git checkout master; 在主干上合并分支branch ... -
mac删除分区并合并分区
2017-05-03 20:42:16之前安装了win系统,但是用着十分的卡,就连mac也开始卡了,一怒之下抹掉了BootCamp下的win系统,但是发现系统的分区无法合并,系统提供的合并分区的-号也完全点不了,后来自己一路摸索,最终解决了 终端下依次输入... -
qt 合并单元格 tablewidget 合并单元格
2019-05-23 15:13:10合并单元格效果的实现: tableWidget->setSpan(1, 1, 2, 2) # 其参数为: 要改变单元格的 第一个单元格 行数 列数 要合并的 几行 几列 代表从(1,1)单元格开始合并,要合并两行两列,即图片红色标注部分 ... -
启发式合并&线段树合并&treap合并&splay合并
2017-08-13 19:48:06启发式合并 有nn个集合,每次让你合并两个集合,或询问一个集合中是否存在某个元素。 我们可以用平衡树/set维护集合。 对于合并两个A,BA,B,如果|A|<|B||A|<|B|,那么我们就把AA中的每个元素暴力加到BB中,... -
vector合并
2019-05-11 10:25:45vector的合并有三种方法: 1、当然就是自己写循环来遍历合并了,但是运行效率极低,不推荐这样做 2、用merge函数,在头文件<algorithm>中,使用该函数需要注意的: a、合并的目标容器必须要有足够的空间,... -
m3u8合并解密 TS视频文件分片合并解密
2019-04-10 08:22:56m3u8合并解密 qq群:366950911 图片: 合并成功 -
pyspark 合并列与合并行
2017-11-27 15:30:07在pyspark中我们经常会碰到合并列或者合并行的操作,其实很简单: 合并列: df.withColumn(新列名,df1[列名]) #将df1中的列合并到df中 行合并: df.union(df1) #将df与df1进行行合并,这时df与df1的列名要相同 -
合并排序
2018-03-19 13:10:06与很多有用的算法类似,合并排序基于这样一个技巧:将 2 个大小为 N/2 的已排序序列合并为一个 N 元素已排序序列仅需要 N 次操作。这个方法叫做合并。 我们用个简单的例子来看看这是什么意思: 通过此图你可以... -
CSV文件合并方法整理:行合并、列合并
2020-05-03 21:04:01行合并:[A,B]’ 上下形式 【1】python import pandas as pd f1=pd.read_csv('11.csv') f2=pd.read_csv('22.csv') file=[f1,f2] train=pd.concat(file) train.to_csv('train.csv',index=0,sep=',') 【2】python ... -
bootstrap 合并单元格之mergeCells属性合并
2019-04-17 16:37:52bootstrap 合并单元格之mergeCells属性合并 合并单元格有多种实现方式 本文是根据bootstrap 自带的mergeCells属性实现的单元格合并, 原理是根据有规律的排序数据 然后在展示层根据数据行数 合并,这样的劣势是 ... -
git 合并策略
2019-02-24 15:56:13不清楚 git 冲突的表示方法,不了解 git 的合并原理,不知道 git 解冲突的多种策略。即便如此,大多数人依然可以正常使用 git 完成合并、拉取操作,并且解一些冲突。这得益于 git 默认情况下的合并方式可以处理... -
gitlab合并请求以WIP 开头的合并请求,怎么没有合并成功?
2019-01-07 00:09:28研发中的代码想存储起来,但是又避免研发中的代码被合并,开发就会创建一个WIP的分支 WIP MR WIP MR 含义是 在工作过程中的合并请求,是一个我们在 GitLab 中避免 MR 在准备就绪前被合并的技术。只需要添加 ... -
git合并分支流程
2020-08-07 08:31:07git 合并分支 情景: 现有两个分支: master 主分支,已经上线 dev 开发分支 因为master分支有一些上线的配置,所以需要将master合并到dev上 然后测试无误后,再将dev分支合并回master 详情如下: # ... -
虎牙、斗鱼正式达成合并协议;中国广电正式成立,或催生5G发展新格局;Linux 5.9 释出|极客头条
2020-10-13 10:23:02整理 | 郑丽媛 头图 | CSDN 下载自东方 IC ...根据合并协议,虎牙将通过以股换股合并收购斗鱼所有已发行股份,包括由美国存托凭证(ADS)所代表的普通股。斗鱼在合并前已发行的股份及ADS将取消,斗鱼将成为.. -
Pandas合并之Concat合并
2018-04-09 14:57:24axis=0, join='outer', join_axes=None, ignore_index=False,keys=None, levels=None, names=None, verify_integrity=False)参数说明objs:series或者dataframe对象构成的序列asix:需要合并连接的轴,0是行,1是列join... -
TortoiseSVN打分支、合并分支、切换分支
2018-08-31 17:45:50合并到trunk主干上),然后开发到一定程度的时候,再将branches合并到主干trunk上。此方式,也很常用 。 声明一 :本次示例的软硬件环境为:Windows10、VisualSVNServer、TortoiseSVN、Eclipse。 注: ... -
easyexcel 合并单元格
2020-07-25 21:15:07easyexcel合并单元格 -
idea git 合并分支
2018-07-12 16:22:20idea git的使用(四)git建立分支与合并分支作者:马育民 • 2017-11-10 17:05 • 阅读:103571. 为什么要建立分支git默认的主分支名字为master,一般团队开发时,都不会在master主分支上修改代码,而是建立新... -
Python中numpy数组的拼接、合并
2018-06-12 15:30:09Python中numpy数组的合并有很多方法,如 np.append() np.concatenate() np.stack() np.hstack() np.vstack() np.dstack() 其中最泛用的是第一个和第二个。第一个可读性好,比较灵活,但是占内存大。第二个则... -
如何将多个EXCEL表格中的信息合并到一个表格中?Excel多个文件多个Sheet合并到一个表的绿色工具
2019-06-07 19:41:51如何将多个EXCEL表格中的信息合并到一个表格中?多个Excel批量合并的绿色工具 进入网址:http://www.excelfb.com/,点击多个Excel文件合并(合并到一个表) 或者多个Excel文件合并(相同名称的Sheet表合并) ... -
java poi导出 合并行 合并列
2019-07-29 16:16:26在excel 导出的时候 碰到要合并行 和合并列的问题 这里使用了一个重要的函数: CellRangeAddress(int, int, int, int) 参数(起始行,终止行,起始列,终止列) 先设计好表格,在设置值,注意:合并了单元格,... -
webstorm合并分支,Git合并分支
2020-04-30 12:21:11合并之后,push时遇到的问题 webstorm可视化操作,命令操作场景:把dev分支的代码合并到V4分支 1、查看是否有更改的代码,如果有可以先暂存到shelf中,可以直接拖动,或者右键-Shelve Changes-Shelve Changes。 ...
-
Keil.STM32F1xx_DFP.2.3.0.1.rar
-
2021-02-25
-
只有你想不到!产品推广的108种方法!
-
【布道者】Linux极速入门
-
Galera 高可用 MySQL 集群(PXC v5.7+Hapro)
-
使用差分进化快速检测人类
-
freopen(“in.txt“,“r“,stdin) 函数的用法(转载)
-
面试简历制作简历篇.ppt
-
Keil.STM32F2xx_DFP.2.9.0.1.rar
-
MySQL你该了解的那些事【服务端篇】
-
迭代器原理图
-
HTML5动态效果制作方法整理
-
2020天猫国货食品趋势洞察报告.pdf
-
DLAU:FPGA上的可扩展深度学习加速器单元
-
程序员必修基础套餐课
-
一种基于信息分离的高维多目标进化算法
-
centos查看当前用户
-
ELF视频教程
-
基于衍射叠栅信号的超精密定位系统
-
TMU-MVG-material.zip