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

【Pandas | 03】数据拼接篇「concat,merge,append,join」 前言 Pandas中关于数据帧的拼接有concat,merge,append,join四种方法,本项目简单来对比总结一下~ 运行环境:Jupyter notebook 概述 相对来说,concat和merge能做的事更多些,append和join相当于只是他们的子功能,不过如果只是简单粗暴的连接多个DataFrame,append和join可能用起来更方便一些。 方式 特点 用法示例 concat 通过行/列索引进行连接 pd.concat([df1, df2]) merge 通过 阅读详情
AI摘要

本文详细介绍了Pandas中的数据拼接和合并方法,包括concat、merge、join和append。concat主要用于系列或DataFrame的行或列拼接,可设置连接方式和是否忽略索引;merge则关注于基于特定键的两个DataFrame的合并,支持内连接、外连接等;join与merge相似,但更侧重于基于行索引的列拼接;append是DataFrame的简单拼接,适用于系列或DataFrame的追加。通过实例展示了各种方法的使用和效果,帮助理解它们之间的区别和应用场景。

1 主要参考博客以及说明:

https://blog.youkuaiyun.com/weixin_42782150/article/details/89546357

  • 本文更像对参考博客的个人解读,以及一些个人补充完善,有些地方与作者表达可能并非一致望自行验证。

  • 函数的某些参数可能随着版本更新已经不再使用,所以本文仅供参考

2 函数参数以及参数含义

concat

pandas.concat(objs, axis=0, join='outer', join_axes=None, ignore_index=False, keys=None, levels=None, names=None, verify_integrity=False, sort=None, copy=True)
  • objs:series,dataframe等要拼接的对象

  • axis:指明连接的轴向, 0:index行, 1:columns列,默认为0即行连接

  • join:指明连接方式 ,inner交集,outer并集,默认为outer并集

  • join_axes:自定义的索引。作为join中交集与并集的补充

  • ignore_index=True:重建索引

merge

DataFrame.merge(left, right, how='inner', on=None, left_on=None, right_on=None, left_index=False, right_index=False, sort=False, suffixes=('_x', '_y'), copy=True, indicator=False, validate=None)
  • left和right:要拼接的series或者DF,同concat中objs类似,只是concat中多个DF拼接需要写到列表中且可以多个DF拼接,merge只能是俩DF

  • how:连接方式,有inner、left、right、outer,默认为inner

  • on:用于连接的列索引名称,必须同时存在于左、右两个DataFrame中,默认是以两个DataFrame列名的交集作为连接键,若要实现多键连接,‘on’参数后传入多键列表即可

  • left_on:左侧DataFrame中用于连接键的列名,这个参数在左右列名不同但代表的含义相同时非常有用;

  • right_on:右侧DataFrame中用于连接键的列名

  • left_index:使用左侧DataFrame中的行索引作为连接键( 但是这种情况下最好用JOIN)

  • right_index:使用右侧DataFrame中的行索引作为连接键( 但是这种情况下最好用JOIN)

  • sort:默认为False,将合并的数据进行排序,设置为False可以提高性能

  • suffixes:字符串值组成的元组,用于指定当左右DataFrame存在相同列名时在列名后面附加的后缀名称,默认为(’_x’, ‘_y’)

  • copy:默认为True,总是将数据复制到数据结构中,设置为False可以提高性能

  • indicator:显示合并数据中数据的来源情况

join

DataFrame.join(other, on=None, how='left', lsuffix=' ', rsuffix=' ', sort=False)
  • join参数与merge基本一致,常用参数见上方merge方法的参数解释即可。

append

DataFrame.append(other, ignore_index=False, verify_integrity=False, sort=None)
  • other就是要拼接的对象

  • verify_integrity:如果为T,那么创建重复索引会报错

  • 默认的链接方式同join也是左外连接。

方法实例

concat(类比关系型数据库表之间的拼接更像mysql中的union和join函数的结合体)

  • 1 默认行拼接图片

  • 2 进行列拼接图片

  • 3 可以用key参数来显示拼接后数据所属的DF
    图片

  • 4 当两个DF使用concat默认拼接方式(即行拼接时候)与append的效果是一致的图片

  • 5 concat设置拼接方式为inner取交集的时候,如果是行拼接就会留下共有的列,同理列拼接会留下相同的行图片

merge

  • merge拼接常用于两个表有相同的列,且该列的数据相同,类似于数据库表中的两张表主键相同,默认情况下结果条件下:如图,BD列同名,行数据中重复的只有df1中的索引2和索引3,那么结果就会重新生成索引且其他不重复的列取的索引为左表对应的索引值,右表同样取得是对应索引位置上的值,也就是会默认以左边的索引位置取值。
    图片
  • 如果想保留两个表的所有数据,就要用到参数left_index与right_index,how参数作用即为设置左右两个表用哪个表的索引当新生成表的索引图片图片

  • 参考博客中说:当axis=1时,pd.concat([obj1, obj2], axis=1)与pd.merge(obj1, obj2, left_index=True, right_index=True, how='outer') 的效果是相同的。这里测试应该是有些特殊情况下结果相同图片

caoncat个人认为如果需要多个表同时操作使用比较方便,功能比较齐全;merge在两个表有”共键“的情况下使用更方便,从参数on也可以看出使用偏向,也更类似数据库中的表之间join,更多奇技淫巧待发掘

join

  • 个人看来join与merge更加类似,参数中join的lsuffix与rsuffix和suffixes是一致的,一些情况下join更像merge的一个阉割版,可能偏向用参考文章中的一句话是:JOIN 拼接列,主要用于基于行索引上的合并,行的拼接目前本人还未遇到合适场景

  • 在两个DF有重复的列名以及不重复的数据情况下,做一个对比图片

  • 关于join中使用sex_index参数实现的效果直接用参考资料中的代码来展现(偷懒不自己运行了,参考文章中join的用法介绍的比较详细)

#样集1
left=pd.DataFrame({'key':['foo','bar1'],'lval':[1,2]})
>>>
    key  lval
0   foo     1
1  bar1     2
#样集2
right=pd.DataFrame({'key':['foo','bar'],'rval':[4,5]})
>>>
   key  rval
0  foo     4
1  bar     5
#列名和列内容均部分相同的表df1和df2进行基于列索引,列拼接
left.join(right.set_index('key'),on='key')
>>>
    key	  lval	rval
0   foo    1	4.0
1   bar1   2	NaN
#样集3
left=pd.DataFrame({'key':['foo','bar1'],'val':[1,2]})
>>>
    key   val
0   foo     1
1   bar1    2
#样集4
right=pd.DataFrame({'key':['foo','bar'],'val':[4,5]})
>>>
   key  val
0  foo    4
1  bar    5
#列名相同,列内容部分相同的表df1和df2基于列索引进行列合并,必须用参数lsuffix='_l',rsuffix='_r'指定重名列的下标,否则报错
left.join(right.set_index('key'),on='key',lsuffix='_l',rsuffix='_r')
>>>
    key	  val_l	 val_r
0   foo	    1	 4.0
1   bar1    2	 NaN
#特别注意,即使列名相同了,也必须用到' set_index(key)' 否则直接使用
left.join(right,on='key',lsuffix='_l',rsuffix='_r')
>>> ValueError: You are trying to merge on object and int64 columns. If you wish to proceed you should use pd.concat
#另外需明确,不指定'ON= '参数的情况下,JOIN是按行索引进行列拼接,不对列进行任何操作。
left.join(right,lsuffix='_l',rsuffix='_r')
>>>
        key_l	val_l	key_r	val_r
0	foo	 1	foo	 4
1	bar1	 2      bar	 5

从上面结果看来,在两个DF有重叠部分的时候,个人认为merge更偏向两个表的列之间的融合,而join更偏重于行之间的融合,合并分成了1 单纯的拼接类似于并集的谁也不干涉谁,2 有交集的拼接

append

  • 个人认为append就是concat的阉割版(甚至比join是merge的阉割版更符合阉割的感觉),在介绍concat的时候也有append的例子,唯一需要注意的就是在对series进行拼接的时候,记得要将ignore_index=Ture,原因见下方图片

  • 如何添加name呢?图片

其他参考资料

append:pandas的DataFrame的append方法详细介绍_修炼之路-优快云博客_dataframe.append()

join:Pandas中的join()合并数据方法_KJ.JK的博客-优快云博客_pandas的join

merge:[Python3]pandas.merge用法详解_Asher117的博客-优快云博客_pandas.merge

concat:[Python3]pandas.concat用法详解_Asher117的博客-优快云博客_pandas.concat

如果有错误的地方欢迎指正~

用ChatGPT 5.5掌握SCI的4个实操润色技巧,论文质量极速提升!(附提示词) ChatGPT 5.5的发布,在学术写作中的应用变得更加精准和安全,通过正确的使用方法,不仅可以改善语法与表达,让论文达到SCI发表水准,还能最大程度保留作者原意,将AIGC检测率控制在低风险区间。可以帮大家省下大量纠结语法、梳理逻辑的时间,在保证润色质量的同时,兼顾AIGC检测的合规要求,为论文投稿成功率提供实实在在的提升。通过智能调整语序、优化用词和句式结构,该方法能够在保留学术质感的同时,使文章表达更自然、贴近人工撰写的风格,从而避免文字过于程式化,提升论文整体可读性和表达的个性化特征。 阅读详情

相关推荐

SVA学习笔记(1)——property基本语法及巧用define与property

巧用define与property,让代码更加灵活

craftsman2018ship的博客 1574

Pandas df 合并 concate merge join 三种方法总结

1. concate 1.1语法格式及参数说明 pandas.concat(objs, axis=0, join='outer', ignore_index=False, keys=None, levels=None, names=None, verify_integrity=False, sort=None, copy=True) (1)objs:对象,一般为df或者series (2)axis:拼接方向,默认为0,行拼接,若axis=1,则为列拼接 (3)join:默认为outer表示并集,inne

u010769476的博客 1万+

SOLIDWORKS转CAD字体终极选择:TrueType vs SHX,哪个才是你图纸协作的“安全牌”?

本文深入探讨SOLIDWORKS转CAD工程图中的字体选择问题,对比TrueType与SHX字体在DWG文件协作中的表现。通过真实案例揭示字体映射的兼容性陷阱,提供企业级字体管理方案,帮助工程师规避版本差异、系统依赖和法律风险,确保图纸协作的稳定性。

weixin_34233974的博客 265

concat函数_Pandas系列(三):Dataframe的连接(concat)

介绍上文我们重点介绍下Dataframe的常用操作方法,Dataframe是Pandas的核心对象,功能非常强大,我们主要介绍一下Dataframe的合并操作,也就是concat操作,我们可以使用不同的方法来合并Dataframe。df.concat()方法通常用于合并不同的Dataframe。合并DataFrame为了连接数据框,我们使用concat()有助于连接数据框的函数。我们可以用许多不同...

weixin_39614704的博客 3732

reCAPTCHA v3隐形验证码实战:5分钟教你用Capsolver获取0.9高分令牌

本文提供了一份reCAPTCHA v3隐形验证码的实战指南,详细解析其浏览器评分机制,并手把手教你使用Capsolver自动化获取0.9高分令牌。内容涵盖从环境侦察、关键参数(sitekey与pageAction)提取,到API调用、结果轮询及令牌使用的完整流程,旨在帮助开发者高效绕过自动化交互障碍。

weixin_29314405的博客 347

【OpenClaw从入门到精通】第60篇:多智能体协同实战——用“龙虾”搭建你的数字员工团队(2026企业版)

2026年AI Agent企业落地的核心趋势,正从“单Agent单兵作战”转向“多智能体协同组网”。本文以全球开发者先锋大会“百虾大战”真实案例为蓝本,深度拆解OpenClaw多智能体协同的技术内核——三层解耦架构(模型层-技能层-网关层),系统搭建包含项目经理、架构师、执行者、质量把关者的4大核心Agent团队。通过三种主流协作架构对比、全链路配置代码实操、故障自愈实战演练,结合电商新品上架虚拟场景全流程演示,解决企业多Agent部署中的权限隔离、任务协同、运维自治三大核心痛点。

专注于人工智能、软件开发、工控自动化、工厂数字化及智能化等领域,希望和大家共同进步! 769

Python之---【pandas】pd.concat(df)、df.append(df)

1.官网学习 学习的来源是官方网站,但是对于一些英文阅读能力较弱的童鞋,可能存在一些困难,在这里给出了官网的传送门,想深入了解的可以戳进去了解! pandas.concat() pandas.merging() 2.构造数据 为了后面演示方便,我现在会提前构造出一些数据,这些数据随手构造的,基本和平时用到的数据格式是一样的,如果觉得我造的数据比较丑,大家可以按照自己的喜好重新构造。下面介绍一下数据...

Ricky 4万+

基于STM32单片机的环境监测系统设计与实现

综上所述,基于STM32单片机的环境监测系统具有良好的实时性、准确性和稳定性,能够满足环境监测的需求。本系统的研究意义在于,首先,它能够为用户提供准确的室内空气质量信息,帮助用户了解室内环境的质量状况,从而采取相应的措施来改善室内环境。本文设计并实现了一种基于STM32单片机的环境监测系统,该系统能够实时监测并显示室内环境的温湿度、甲醛浓度以及二氧化碳浓度,为用户提供准确的空气质量信息。实验过程中,我们模拟了不同的环境条件,包括温湿度变化、甲醛和二氧化碳浓度的波动等,以测试系统的实时性、准确性和稳定性。

3254968421的博客 2万+

[黑马程序员Pandas教程]——合并与变形

合并数据集纵向追加合并参数ignore_index默认为False 如果为 True 则重置为自增索引pd.concat函数纵向横向连接多个数据集# 纵向连接,全部数据都保留# 纵向连接,只保留共有数据# 横向连接,全部数据都保留# 横向连接,保留索引值匹配的数据df.merge合并指定关联列的多个数据集df1.merge(df2, on='列名', how='固定值')# 参数on='列名',表示基于那一列进行合并操作。

qq_56444564的博客 2474

rk628d修改默认分辨率

在rk3568上使用628d hdmi转mipi,在628d已经调试好的情况下,客户新增需求:视频输入这边的推荐分辨率固定在1024x768。

m0_60805802的博客 2053

Spine骨骼动画查看器 - Skeleton Viewer

骨骼动画是现代游戏和动画制作中常用的技术之一。Spine骨骼动画查看器(Skeleton Viewer)是一个官方提供的工具,用于查看和调试Spine骨骼动画。本文将介绍Skeleton Viewer的功能和使用方法,并提供相应的源代码示例。通过Skeleton Viewer,开发者可以直观地查看和调试Spine骨骼动画,包括骨骼结构、动画播放和事件触发等。这有助于提高骨骼动画的质量和效果,并加速开发过程。以上代码演示了如何使用Skeleton Viewer查看和播放Spine骨骼动画。

HsvvDatabase的博客 3461

Pandas教程_Merge函数实现数据合并图文详解

Pandas教程 | Merge数据合并图文详解

toby001111的博客 2698

深度测评:Accio Work——目前普通用户最友好的多 Agent 协同工具

摘要:Accio Work是阿里国际站推出的多Agent协同工具,通过借鉴古代"三省六部制"构建高效协作框架。该工具支持主流大模型,可配置专业Agent角色,实现40分钟内完成复杂产品PRD等高效协作。其亮点在于直观的UI设计和流程驱动机制,能强制各Agent从专业视角深度思考。虽然超长对话稳定性有待优化,但作为目前最用户友好的多Agent工具,显著降低了构建复杂AI团队的门槛,成为提升个人和小微企业生产力的利器。

Maynor的博客 1732

Pandas拼接操作(concat,merge,join和append)的区别

这里写自定义目录标题欢迎使用Markdown编辑器新的改变功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学公式新的甘特图功能,丰富你的文章UML 图表FLowchart流程图导出与导入导出导入 欢迎使用Ma...

Yale-曼陀罗 2万+

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

Python中如何将多个dataframe表连接、合并成一个dataframe详解示例(如何将两个表合并行、合并列)--pandas中merge、join、concat、append的区别、用法梳理

Python中如何将多个dataframe表连接、合并成一个dataframe详解示例--pandas中merge、join、concat、append的区别、用法梳理 我们在对Pandas中的DataFrame对象进行,表的连接、合并的时候,好像merge可以join也可以,哪到底他们有什么区别呢?我们使用的时候,该怎么选择哪个函数进行操作呢?本文就对merge、join、concat、app...

跬步Python股票数据量化分析 7万+

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

pandas之数据合并join\merge\concat\append四种方法总结

数据合并 pandas包中,进行数据合并有join()、merge()、concat(), append()四种方法。它们的区别是: df.join() 相同行索引的数据被合并在一起,因此拼接后的行数不会增加(可能会减少)、列数增加; df.merge()通过指定的列索引进行合并,行列都有可能增加; pd.concat()通过axis参数指定在水平还是垂直方向拼接; df.append()在DataFrame的末尾添加一行或多行。 import numpy as np import pandas as

weixin_46115371的博客 8747

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

Pandas的concat,merge,join和append区别

Pandas提供了concat,merge,join和append四种方法用于dataframe的拼接,其区别如下: concat 两个DataFrame通过pd.concat(),既可实现行拼接又可实现列拼接,默认axis=0,join=‘outer’。表df1和df2的行索引(index)和列索引(columns)均可以重复。  a. 当axis=0(行拼接)时,使用pd.concat([df1,df2]),拼接表的index=index(df1) + index(df2),拼接表的columns=co

zephyr_wang的博客 2657

Pandas中的拼接操作(concat,append,join,merge)

Pandas提供了concat、append、join和merge四种方法用于dataframe的拼接,其大致特点和区别见下表: .concat() pandas的顶级方法,提供了axis设置可用于df间行方向(增加行,下同)或列方向(增加列,下同)进行内联或外联拼接操作 .append() dataframe数据类型的方法,提供了行方向的拼接操作 .join() datafr...

guofei_fly的博客 1万+

python合并相关函数(concat、merge、append、join)

在python表格操作过程中常涉及到,表格相互拼接和合并问题。pandas模块为我们提供了很强大的合并功能,常用的方法有concat, append, merge, join。

m0_46411851的博客 1996

pandas---数据合并(concat、append、merge)

不匹配级联指的是级联的维度的索引不一致。例如纵向级联时列索引不一致,横向级联时行索引不。按照行或列进行合并,axis=0为列索引,axis=1为行索引。内连接: 类似交集, 只显示共同的部分,只连接匹配的项。外连接:类似并集,显示所有数据,补NaN(默认模式)。对应索引没有值,会自动用NaN填充。

weixin_43961909的博客 9664

Pandas合并操作四大函数:merge、join、concat、append核心区别与实战指南

在数据分析中,DataFrame合并是数据整合的基础操作,本质是解决多源数据的关联与堆叠问题。其原理围绕三种对齐机制展开:基于列值的横向关联(如SQL JOIN)、基于索引标签的对齐匹配、以及基于位置的纵向堆叠。技术价值体现在提升ETL效率、保障数据一致性、支撑机器学习特征工程等关键环节。典型应用场景包括用户行为日志聚合(concat)、用户主表与订单表关联(merge)、时间序列指标对齐(join)等。本文聚焦Pandas中merge()、join()、concat()、append()四大方法的本质差异

weixin_30245867的博客 452

《超简单:用 Python 让 Excel 飞起来》读书笔记:3.5.4 数据表的拼接:merge、concat、append

Python数据表拼接方法总结 本文介绍了pandas中三种数据表拼接方法: merge() - 按键关联 类似Excel的VLOOKUP或数据库JOIN 核心参数:on(关联字段), how(连接方式) 连接方式:inner(内连接), outer(全外连接), left/right(左/右连接) concat() - 直接拼接 支持轴向拼接:axis=0(纵向追加行), axis=1(横向追加列) 自动对齐索引,可处理不同列名的表 append() - 追加新行 concat(axis=0)的简化版 适

分享 Windows 系统部署、镜像封装、终端管理、故障排查与运维自动化实践,涵盖 Sysinternals、PowerShell 和 AI 工具应用。以真实案例梳理排查思路与解决步骤,让运维经验清晰、可复用。 5万+

【Python学习笔记】键值连接(join、merge)和粘合(concat、append)

向dataframe对象中添加新的行,如果添加的列名不在dataframe对象中,将会被当作新的列进行添加。如果没有指定,会用两个对象中都存在的列作为连接列。也可以进行元组、列表、字典的连接,但是元素必须是字符串才行。也可以使用+来进行字符串连接,但是速度比join()慢。要求两个dataframe要有一样的index。

m0_53196918的博客 2188

append 后如何删除_记录pandas中多表合并(concat, append, merge, join) 的一些问题

在数据整合中我们经常需要把多个表合并在一起。pandas模块为我们提供了很强大的合并功能,常用的方法有concat, append, merge, join。此文将分别记录一下四种方法的常用操作,然后对比一下四种方法。这四种方法的具体用法形式如下:一、concatdf = pd.concat(objs, axis = 0, ignore_index = False, join = "outerco...

weixin_27038261的博客 261

access inner join 数据类型不匹配_记录pandas中多表合并(concat, append, merge, join) 的一些问题...

在数据整合中我们经常需要把多个表合并在一起。pandas模块为我们提供了很强大的合并功能,常用的方法有concat, append, merge, join。此文将分别记录一下四种方法的常用操作,然后对比一下四种方法。这四种方法的具体用法形式如下:一、concatdf = pd.concat(objs, axis = 0, ignore_index = False, join = "outerco...

weixin_39981093的博客 326

inner join 和join的区别_pandas中concat(), append(), merge()的区别和用法

文章目录三个函数的区别concat()append()merge()三个函数各自的拓展用法concat()连接多个DataFrame设置特定的键(key)横向合并两个DataFrameappend()连接多个DataFramemerge()指定两个列名连接DataFramemerge()的四种连接方式1. 三个函数的区别concat(), append(), merge()一般都是用来连接两个或者...

weixin_39845306的博客 1071
上一篇: pandas数据去重:drop_duplicates与duplicated函数
下一篇: pandas中loc与iloc的用法
矮人三等
博客等级 码龄6年 173粉丝 65原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

矮人三等

秀儿,是你吗秀儿?

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值