pandas DataFrame中几种合并方式的区分(merge, join, concat)

Pandas_merge_join 默认情况下,join 函数执行的是左侧连接(left),这意味着它将会保留左侧数据集(left 参数指定的数据集)的所有行,以及右侧数据集(right 参数指定的数据集)中与左侧数据集索引匹配的行。实际上,join 函数的行为更类似于合并具有层次化索引(多级索引,即MultiIndex)的 DataFrame 或 Series 对象。请注意,join 函数通常用于已经具有多级索引的数据集,而 merge 函数提供了更多的灵活性,允许你基于列值进行合并,并且可以指定合并的类型。 阅读详情
AI摘要

本文详细介绍了Pandas中数据合并的三种方法:merge、join和concat。merge类似于SQL的join操作,基于共享列进行左右合并;join则简单地按索引合并;concat主要用于堆叠数据,支持按行或列堆叠。通过实例展示了各方法的用法和参数设置,帮助读者理解它们的区别。

在这里插入图片描述

在使用pandas时,由于有join, merge, concat几种合并方式,而自己又不熟的情况下,很容易把几种搞混。本文就是为了区分几种合并方式而生的。

文章目录


merge

merge用于左右合并(区别于上下堆叠类型的合并),其类似于SQL中的join,一般会需要按照两个DataFrame中某个共有的列来进行连接,如果不指定按照哪两列进行合并的话,merge会自动选择两表中具有相同列名的列进行合并(如果没有相同列名的列则会报错)。这里要注意用于连接的列并不一定只是一列。

用法

pd.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,
         validate=None)

ok,例:

>>> import pandas as pd
>>> df1 = pd.DataFrame({'A':list('abcd'), 'B':list('efgh'), 'C': list('ijkl')})
>>> df1
   A  B  C
0  a  e  i
1  b  f  j
2  c  g  k
3  d  h  l
>>> df2 = pd.DataFrame({'X':list('qwer'), 'Y':list('asdf'), 'C': list('ijkl')})
>>> df2
   X  Y  C
0  q  a  i
1  w  s  j
2  e  d  k
3  r  f  l
>>> df1.merge(df2) # 这里默认以两表的共有列C进行连接
   A  B  C  X  Y
0  a  e  i  q  a
1  b  f  j  w  s
2  c  g  k  e  d
3  d  h  l  r  f
  • merge中可以使用参数on选择共有的列,用在上面的例子中的话就是df1.merge(df2, on='C')
  • 如果两表中用于连接的列的列名不同,使用left_on, right_on选择两个表中用于连接的列
  • 此外使用how参数选择最终结果需要保存的内容,有四种方式inner, outer, left, right
    • inner表示只保存用于连接的两列所共有的值(也就是交集)
    • outer表示保存用于连接的两列中出现的所有值(也就是并集)
    • left表示只保存用于连接的左表的所有值对应的结果,如果某值只在右表的连接列中出现,那么就不会被保存
    • right与left相反
  • suffixes参数可以用于给两表的相同列名加上后缀,默认为(‘x’, ‘y’)
  • left_index为True时表示使用左表的index作为连接键,right_index类似

上面的参数就不一一举例展示了。

join

join比较简单,其用于将两表按照索引列进行合并,能使用的参数也相对比较少

DataFrame.join(other, on=None, how='left', lsuffix='', rsuffix='', sort=False)

这里简单介绍一下参数:

  • other就是另一张表
  • on表示使用左边表中的某一列和右表(即上面的other表)的index来连接
  • how和上面一样
  • lsuffix, rsuffix和上面一样,只是分开写了而已
  • sort默认为False即不排序,但是如果为True时表示按照合并时使用到的值进行排序(也就是两表的索引或者左表的索引+右表的某一列)

concat

concat的功能相对多一点,其一般用于堆叠,可以用于纵向和横向的堆叠,只需要对应地选择axis参数即可。在堆叠时如果要堆叠的方向有相同的列名(如果是横向那么就是索引名),那么会自动堆叠在一起,其余没有同名的列(或索引)就会根据使用的join参数决定去留。

pandas.concat(objs, axis=0, join='outer', ignore_index=False, keys=None, levels=None, 
				names=None, verify_integrity=False, sort=False, copy=True)

参数:

  • 要注意的是concat传入的是一个列表,如pd.concat([df1, df2])这样
  • axis表示选择哪一个方向的堆叠,0为纵向(默认),1为横向
  • join,与上面的how类似
  • ignore_index表示当索引无意义时忽略索引进行堆叠
  • 其余先不介绍啦,用到的应该也不多

叮

本文举例比较少,但是是将三者的区别写的比较详细,若是需要的话读者可以自行尝试一下,相信聪明的你肯定没问题啦!

参考:https://blog.youkuaiyun.com/brucewong0516/article/details/82707492
参考:https://pandas.pydata.org/pandas-docs/stable/index.html

pandas中DataFrame 数据合并,连接(merge,join,concat) pandas作者Wes McKinney 在【PYTHON FOR DATA ANALYSIS】中对pandas的方方面面都有了一个权威简明的入门级的介绍,但在实际使用过程中,我发现书中的内容还只是冰山一角。谈到pandas数据的行更新、表合并等操作,一般用到的方法有concat、join、merge。但这三种方法对于很多新手来说,都不太好分清使用的场合与用途。今天就pandas官网中关于数据合并... 阅读详情

相关推荐

Python基础教程:在Pandas中DataFrame数据合并,连接(concat,merge,join)的实例

@本文来源于公众号:csdn2299,喜欢可以关注公众号 程序员学府 今天小编就为大家分享一篇在Pandas中DataFrame数据合并,连接(concat,merge,join)的实例,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧 最近在工作中,遇到了数据合并、连接的问题,故整理如下,供需要者参考~ 一、concat:沿着一条轴,将多个对象堆叠到一起 concat方法相当于数据...

python函数基础教程 3291

pandas中DataFrame表连接操作,及merge与join的区别

pandas中DataFrame表连接操作,及merge与join的区别。 ValueError: columns overlap but no suffix specified: Index(['dishes_id'], dtype='object') 错误解释

weixin_45602981的博客 3445

GPU运维面试题

【代码】GPU运维面试题。

u011220233的博客 695

【pandas】merge和join

merge和join都是将不同的dataframe进行合并,区别在于merge是通过key将frame合并,而join通过index进行合并。 merge: 两个frame必须要有同一种属性可以作为键值,如下的id属性 import pandas as pd df1 = pd.DataFrame({'id':['A', 'A', 'C', 'B', 'C']}) df2 = pd.DataFrame({'id':['A', 'B', 'C'], 'count':[1, 2, 3]}) df3 = pd.me

这个人很蓝 1411

Avalonia v11实战:手把手教你从零创建第一个跨平台桌面App(含设计器不显示的解决方案)

本文详细介绍了如何使用Avalonia v11从零开始创建跨平台桌面应用,包括环境准备、项目创建、界面设计及常见问题解决方案。特别针对设计器不显示等常见问题提供了实用解决方法,帮助.NET开发者快速掌握这一强大的UI框架,实现Windows、macOS和Linux多平台应用开发。

weixin_30417487的博客 163

用Python可视化硅晶体生长:3D图解<100>/<110>/<111>晶向差异

本文通过Python 3D可视化技术,详细解析了硅晶体生长中<100>、<110>、<111>三种关键晶向的差异及其在半导体工业中的应用。从密勒指数转换到原子密度计算,结合交互式3D模型展示不同晶向的原子排列特性,帮助读者深入理解晶向对芯片性能的影响。

weixin_42567752的博客 564

实战讲解pandas中merge, join, concat的区别

1.从一个需求说起 最近经常有这么一堆数据需要处理一下,而且是很常见的需求: 有一个数据集,数据集里全是数字,需要对数据集按区间段进行个数统计,并计算各区间段的占比,所以本质上就是个算占比的事情。 有的同志对此不屑一顾,这算哪门子事,搞个excel还不是很简单。 当然excel是可以解决上面的问题。问题在于,第一,程序猿是很讨厌使用excel这种带.xxx的文件的,.xxx意味着通用性很差,必须用特定的软件程序才能打开。第二,大部分的开发环境是linux或者macos,这两开发环境不像windows,对于o

bitcarmanlee的博客 4133

UNITE真菌数据库使用避坑指南:从下载到注释的完整流程

本文提供了UNITE真菌数据库从下载到注释的完整实战指南。针对真菌ITS序列分析,重点解析了数据库版本选择、格式转换的常见陷阱,并详细介绍了如何训练优化的sklearn分类器以提升物种注释的精度和可靠性,帮助用户构建高效稳定的本地工作流。

weixin_29240343的博客 199

python 数据合并 merge , join , concat的区别

merge , join , concat的区别 merge : 与sql 的join类似,有left join ,right join ,outer join , 连接字段可以是索引可以是一个列 join : 连接字段是索引,或者两个连接字段的列名一样。 其他 与merge 相同 merge is a function in the pandas namespace, and it is als...

数据分析 2799

window下安装并使用nvm(含卸载node、卸载nvm、全局安装npm)

文章目录一、卸载node二、安装nvm三、配置路径和下载源四、使用nvm安装node五、nvm常用命令六、卸载nvm七、遇到的问题 nvm 全名 node.js version management,顾名思义是一个nodejs的版本管理工具。通过它可以安装和切换不同版本的nodejs。 一、卸载node 如果你已经安装了node,那么你需要先卸载node,如果你没有安装那直接跳过这一步到下一步。 打开控制面板 -> 打开程序和功能 -> 右上角搜索输入node -> 右键卸载 为了确保彻底

HuangsTing的博客 41万+

PostgreSQL隐式类型转换全解析:告别operator does not exist

强类型数据库是现代数据系统的基石,它在带来严谨性的同时,也常常让开发者在类型不匹配报错前束手无策。当一条SQL因bigint与text比较而抛出operator does not exist时,根源往往在于对数据库隐式转换规则的误解。PostgreSQL通过pg_cast系统表将转换划分为隐式、赋值与显式三个级别,并依据操作符解析逻辑决定是否自动提升类型。理解这些机制,不仅能快速定位JOIN、UNION、函数调用等场景下的类型错误,还能帮助开发者合理使用EXPLAIN VERBOSE、pg_typeof等工

weixin_29587015的博客 304

Python - pandas DataFrame数据的合并与拼接(merge、join、concat)

目录1 Merge方法单列的内连接定义df1定义df2print(df1)print(df2)基于共同列alpha的内连接单列的外连接定义df1定义df2基于共同列alpha的内连接单列的左连接定义df1定义df2基于共同列alpha的左连接单列的右连接定义df1定义df2基于共同列alpha的右连接多列的内连接定义df1定义df2基于共同列alpha和beta的内连接多列的右连接定义df1定义df2基于共同列alpha和beta的右连接基于column和index的右连接定义df1定义df2基于df1的b

sc179的博客 21万+

File does not exist: /user/anonymous/.staging/job_1628851608378_6064/报错问题解决

user/admin/.staging/job_1571397171638_0001/job_1571397171638_0001_1.jhist 所以为什么没有下发,这里面jhist,只是被引发的错误,它还不是根本的错误。看到上面错误,我们就可以判断,这是网络问题,然而网络无非是ip地址,防火墙,端口,hosts等。我们正常的hosts是这样的。在回头复盘想想,我们找不到jhist,跟我们的网络问题二者是很难找到关联的,所以大家在遇到问题的时候,一定多排查和思考,而不是看到一个错误,就以为是它的问题。

石榴姐yyds 2169

【pandas】[3] DataFrame 数据合并,连接(merge,join,concat)

作者:lianghc 连接:http://blog.youkuaiyun.com/zutsoft/article/details/51498026 merge  通过键拼接列 pandas提供了一个类似于关系数据库的连接(join)操作的方法merage,可以根据一个或多个键将不同DataFrame中的行连接起来 语法如下: merge(left, right, how='inner', on=No...

LiangHC 34万+

银行监管报送系统介绍(十五):金融审计平台

金审平台主要包括基础、财务、结算、信贷和中间业务五大板块,主要服务于审计署对中国银行的各项审计任务,同时也可为行内审计、稽核检查、数据分析、总分行提供基础数据服务,为实现基础数据共享提供了有力的数据保障。2019年1月某全国性股份制商业银行收到审计署2019-23号文,文中指出为进一步提高审计数据质量,审计署审计组派员前往9家重点商业银行,就完善标准化数据的相关情况与各银行有关部门进行讨论协商。关于数据报送频率及报送内容:数据从2019年4月开始,按月报送,即于每月25日之前报送上月数据;

银行信息系统应用架构详解 2052

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

pandas -- 基础操作(四): dataFrame 数据拼接merge、join、concat、append

系列文章目录 基础操作(四): dataFrame 数据拼接merge、join、concat、append 文章目录系列文章目录前言dataFrame 数据拼接的方法:1. merge()2. Join()3.append()4. concat()总结 前言 Pandas.DataFrame操作表连接有三种方式:merge, join, concat,append, 下面详细解释这几个方法的使用。 dataFrame 数据拼接的方法: 1. merge() df.merge(): 可以根据一

qq_33624802的博客 7168

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

pandas系列-DataFrame合并的方式(merge,join,concat)

pandas中合并多个DataFrame的多种方式: merge合并是根据某列中相同的值进行合并 join是左右合并多个DataFrame,相当于合并了多个列 concat 可以把多个列名相同的DataFrame合并,可以设置行合并还是列合并 1. merge(根据相同的列值连接合并) how=连接方式 on=合并列名 默认内连接方式为内连接 不设置只考虑key列中共同有的值 df1 = pd...

Yolo_C的博客 7447

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

IMSL CNL 7.0.0 (x86-64)Crack

IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件

pandas中DF拼接:concat,merge,join,append方法区别

pandas中DF拼接:concat,merge,join,append方法区别

Lian_Ge_Blog的博客 1万+

pandas中的数据合并:join、merge、concat

pandas中数据合并:join、merge、concate函数使用

a347604678的博客 5026

Pandas中DataFrame数据合并、连接(concat、merge、join)

最近在工作中,遇到了数据合并、连接的问题,故整理如下,供需要者参考~一、concat:沿着一条轴,将多个对象堆叠到一起 concat方法相当于数据库中的全连接(union all),它不仅可以指定连接的方式(outer join或inner join)还可以指定按照某个轴进行连接。与数据库不同的是,它不会去重,但是可以使用drop_duplicates方法达到去重的效果。concat(...

象在舞的技术专栏 17万+

Pandas使用教程 - 数据合并与连接 (merge, join, concat)

merge 方法类似 SQL 的 JOIN 操作,根据一个或多个键将两个 DataFrame 合并;支持内连接、左连接、右连接和外连接;适用于需要根据共同列进行数据整合的场景。join 方法基于索引的连接方式,默认使用 DataFrame 的索引进行对齐;可用于索引对齐的数据合并,简单快捷。concat 方法用于沿行或列拼接多个 DataFrame;适合于将分块数据或多文件数据叠加在一起进行统一处理;支持重新生成索引、按轴拼接等高级功能。

闲人编程的博客 2352

Pandas中DataFrame关联操作(concat、append、merge、join)

结论: concat与append是属于拼接操作 concat简略形式,只能在axis=0上进行合并 merge与join属于关联操作,类似于sql中的join操作 merge可以实现列与索引上关联操作,join只能索引上关联操作 关联操作基本上用merge就可以了 一、Concat操作 函数: pd.concat(objs, axis=0, join='outer', join_...

ai_1046067944的专栏 1万+

dataframe 上下拼接_DataFrame数据合并与连接(merge,join,concat)

merge 通过键拼接列pandas提供了一个类似于关系数据库的连接(join)操作的方法merage,可以根据一个或多个键将不同DataFrame中的行连接起来语法如下merge(left, right, how='inner', on=None, left_on=None, right_on=None,left_index=False, right_index=False, sort=Tru...

weixin_31448735的博客 5822

Python Pandas 数据合并与拼接:常用的数据操作concat、merge 和 join 详解

本文介绍了使用 Pandas 库进行数据合并、拼接和连接的常见方法。通过 `concat()`、`merge()` 和 `join()` 函数,用户可以灵活地处理多个 DataFrame 的合并与拼接。`concat()` 用于按行或列拼接数据,`merge()` 基于键值进行合并,支持多种连接方式,包括内连接、外连接、左连接、右连接和交叉连接。`join()` 则通过索引连接 DataFrame,提供了简洁的左连接操作。

敲代码别忘了喝上一杯凉白开。 1997

pandas合并dataframe

pandas拼接dataframe的四种方式,append,merge,join,concat

Garrix的博客 8129

python DataFrame 数据合并,连接(merge,join,concat)

merge 通过键拼接列 pandas提供了一个类似于关系数据库的连接(join)操作的方法merage,可以根据一个或多个键将不同DataFrame中的行连接起来 语法如下: merge(left, right, how='inner', on=None, left_on=None, right_on=None, left_index=False, right_index=Fal...

dudu3332的博客 2459
上一篇: python作图之plt.contour详解
下一篇: 利用python绘制简易词云图(使用jieba进行中文分词)
你大佬来啦
博客等级 码龄7年 322粉丝 62原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值