Pandas知识点-合并操作merge

2023-11-17

Pandas知识点-合并操作merge

merge()方法是Pandas中的合并操作,在数据处理过程中很常用,本文介绍merge()方法的具体用法。

一、基础合并操作

merge(left, right): 将两个DataFrame或Series合并到一起。left和right参数是必传参数,分别传入一个DataFrame或Series对象,合并的顺序与传入的顺序一致。从参数名left和right可以看出,merge()方法主要用于按列合并(横向合并)。

原理如下:

merge()方法也可以实现按行合并(纵向)的效果,需要两个DataFrame的列名完全一样,且要指定合并方式为outer。

如果两个DataFrame的列名完全相同,使用outer合并方式,效果是将两个DataFrame按行合并到一起。merge()默认的合并方式是inner(取交集),列名完全相同时取交集合并的结果是空DataFrame。

原理如下:

其实,此时合并的原理也是按列合并,特殊的是两个DataFrame中列名完全一样,且没有指定on参数。merge()方法自动将所有列同时作为连接列,合并时取并集,所有的连接列在结果中都返回了,得到的效果就与按行合并一样。(理解how参数和on参数后就会明白,下文马上介绍)。

二、连接方式

how: 指定合并时使用的连接方式,连接方式有四种,默认为inner。

inner 内连 取key列的交集
outer 外连 取key列的并集
left 左连 使用左边df的key列
right 右连 使用右边df的key列

三、指定连接的列

on: 指定合并时用于连接(外连,内连,左连,右连)的列。默认为None,merge()方法自动识别两个DataFrame中名字相同的列,作为连接的列,如本文前面的例子中没有指定on参数,也自动识别了相同的列作为连接列。

合并时,先找到两个DataFrame中的连接列key,然后将第一个DataFrame中key列的每个值依次与第二个DataFrame中的key列进行匹配,匹配到一次结果中就会有一行数据。上面的left和right中key列都是k0~k2,k0~k2分别匹配到一次,共匹配三次,所以结果有三行。假如将k0~k2都改成k,则left中的每一个k可以与right中的k匹配到三次(many_to_many,后面会介绍),共匹配9次,结果会有9行。

on参数指定的列必须在两个被合并DataFrame中都有,否则会报错。

on参数也可以指定多列,合并时按多个列进行连接。

在合并时,只有多个列的值同时相等,两个DataFrame才会匹配上。上面的例子中,用于连接的列是key1,key2,k0,k0在两个DataFrame中都有,匹配到一次,k1,k1匹配到两次,k2,k2和k2,k3等都没有匹配成功,所以结果为三行(默认合并方式为inner)。

原理如下:

四、两个DataFrame分别指定连接列

使用on参数时,指定的列必须在两个DataFrame中都有。merge()方法也支持两个DataFrame分别指定连接的列,此时不要求指定列在两个DataFrame中都有。

left_on: 指定第一个DataFrame中用于连接的列,默认为None。

right_on: 指定第二个DataFrame中用于连接的列,默认为None。

当left_on和right_on都指定一样的列时,与用on参数的结果一样。如果left_on和right_on指定不同的列,可能因为连接列的值匹配不上,结果是一个空DataFrame,将连接方式改成outer后才能得到非空的DataFrame。

left_on和right_on也可以指定一个array数组,长度与DataFrame中的列长度相等,连接原理不变。

left_index: 设置第一个DataFrame用行索引进行连接,默认为False。

right_index: 设置第二个DataFrame用行索引进行连接,默认为False。

left_on和right_on可以与left_index和right_index混合使用,当指定了其中一个DataFrame的连接列时,必须同时指定另一个DataFrame的连接列,否则会报错。两个DataFrame都有两种方式指定连接列,所以组合的方式有四种。

DataFrame left right

四种指定连接列的组合

left_on right_on
left_index right_index
left_on right_index
left_index right_on

五、自定义相同列名的后缀

suffixes: 当被合并的两个DataFrame中有相同的列名时,会给列名拼接后缀以作区分,默认为('_x', '_y')。可以修改suffixes参数进行设置,传入长度为2的字符串元组。

六、连接列是否存在DataFrame中

indicator: 在结果中增加一列,显示连接列是否存在于两个DataFrame中。indicator默认为False,如果修改为True,会增加一列,增加的列名默认为_merge。

给indicator参数指定一个值,则将这个值作为新增列的列名。在新增的列中,如果连接列同时存在于两个DataFrame中,则对应的值为both,如果连接列只存在其中一个DataFrame中,则对应的值为left_only或right_only。

七、连接列的对应关系

validate: 用于指定两个DataFrame连接列的对应关系,有one_to_one(一对一),one_to_many(一对多),many_to_one(多对一),many_to_many(多对多)四种对应方式。默认为None,merge()方法自动根据两个DataFrame的连接列采用适合的对应方式。

one_to_one: 检查两个DataFrame中的连接列,值必须唯一。

one_to_many: 检查第一个DataFrame中的连接列,值必须唯一。

many_to_one: 检查第二个DataFrame中的连接列,值必须唯一。

many_to_many: 两个DataFrame连接列中的值都可以不唯一。

使用多对多的对应方式,任何情况都满足,合并不会报错。而使用其他三种方式时,如果one对应的DataFrame中连接列的值不唯一,会报错。所以,在对数据不够了解、也没有特别的对应要求时,不用指定validate参数。

以上就是Pandas合并方法merge()的介绍,本文都是以DataFrame为例,Series合并以及Series与DataFrame合并的原理相似。

如果需要本文代码,可以扫码关注公众号“Python碎片”,然后在后台回复“pandas13”关键字获取完整代码。

 

 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Pandas知识点-合并操作merge 的相关文章

  • 机器视觉运动控制一体机应用例程(十一)产品全局外观检测

    前面讲述的外观检测的课程中 我们都是以矩形ROI区域框选我们需要检测的外观表面范围 但是很多产品外形通常都不是规则的矩形或者圆形 用矩形或者圆形ROI区域很难对产品的外观进行全局检测 可能会遗漏掉某些细节部分 因此 我们引入了将提取的产品轮
  • 全景解密量子信息技术:高层集中学习,国家战略,三大领域一文看懂

    来源 智东西 内参来源 中国信通院 IPRdaily中文网 10月16日下午 高层就量子科技研究相关前景举行了一次会议 强调当今世界正经历百年未有之大变局 科技创新是其中一个关键变量 要充分认识推动量子科技发展的重要性 加强量子科技发展战略
  • numpy之索引和切片

    索引和切片 一维数组 一维数组很简单 基本和列表一致 它们的区别在于数组切片是原始数组视图 这就意味着 如果做任何修改 原始都会跟着更改 这也意味着 如果不想更改原始数组 我们需要进行显式的复制 从而得到它的副本 copy import n
  • json转xml、xml转json

    一 jar包 所需jar包 二 xml2json 方法一 使用json lib 代码 public String xml2json String xml 创建XMLSerializer对象 XMLSerializer xmlSerializ
  • 计算机房面积标准,机房建设标准与规范[共14页].pdf

    电子信息系统机房设计规范 施行日期 2009 年 6 月 1 日 1 总则 1 0 1 为规范电子信息系统机房设计 确保电子信息系统安全 稳定 可靠地运行 做到技术先进 经 济合理 安全适用 节能环保 制定本规范 1 0 2 本规范适用于建

随机推荐

  • GPU工作原理与理解

    本周看GPU看得有点儿乱 GPU英文全称Graphic Processing Unit 中文翻译为 图形处理器 由于GPU具有高并行结构 highly parallel structure 所以GPU在处理图形数据和复杂算法方面拥有比CPU
  • linux并行计算环境搭建与使用,Windows和Linux系统下并行计算环境MPI和OpenMP的搭建...

    windows平台下在Visual Studio2019配置MPI环境 MPI下载安装 项目配置 右击项目 gt 属性 进行配置 右上角 gt 配置管理器 gt 活动解决方案平台 选择 x64 VC 目录 gt 包含目录 添加 C Prog
  • CUDA 矩阵乘法优化

    矩阵乘法 为了单纯起见 我们这里以方形的矩阵为例子 基本上 假设有两个矩阵 A 和 B 则计算 AB C 的方法如下 for j 0 j lt n j C i j 0 for k 0 k lt n k C i j A i k B k j 一
  • python安装包国内镜像,pip使用国内镜像

    目录 python 安装包镜像 pip下载时使用国内镜像 python 安装包镜像 下载python安装包和pip下载第三方库时 由于一些客观原因 下载外网文件速度很慢 这时可以使用淘宝镜像下载 http npm taobao org mi
  • Qt *.pro文件的INCLUDEPATH和LIBS写法

    Qt pro文件的INCLUDEPATH和LIBS写法 一般的通用 如图所示 INCLUDEPATH usr local qwt 6 1 3 include INCLUDEPATH include LIBS L usr local qwt
  • 基于nginx的tomcat负载均衡和集群(超简单)

    今天看到 基于apache的tomcat负载均衡和集群配置 这篇文章成为javaEye热点 略看了一下 感觉太复杂 要配置的东西太多 因此在这里写出一种更简洁的方法 要集群tomcat主要是解决SESSION共享的问题 因此我利用memca
  • OpenCV的使用——读取、写入和显示图像

    代码 import the cv2 library import cv2 The function cv2 imread is used to read an image Read an image img color cv2 imread
  • Java JDBC连接数据库 查询SELECT

    package com edu import java sql public class jdbctest public static void main String args throws SQLException ClassNotFo
  • ubuntu 查看显卡命令

    要查看 Ubuntu 系统中的显卡信息 可以使用如下命令 lspci grep VGA 这条命令可以列出系统中所有的显卡设备 lshw c video 这条命令可以列出系统中的所有显卡信息 包括型号 芯片厂商和其他详细信息 glxinfo
  • Android颜色透明度(不透明度)对应的十六进制

    颜色值 AARRGGBB 透明度百分比和十六进制对应关系 下面是透明度 再加上平常写得颜色值就表示该颜色值多少透明度了 一 一张表格 基本都概括 方便查找和使用 透明度 十六进制 100 FF 99 FC 98 FA 97 F7 96 F5
  • 计算机操作系统实验三 进程间的通信

    一 实验目的 1 了解什么是管道 2 熟悉UNIX LINUX支持的管道通信方式 3 了解什么是消息 4 熟悉消息传送的机理 二 实验内容 1 编写程序实现进程的管道通信 用系统调用pipe 建立一管道 二个子进程P1和P2分别向管道各写一
  • 数字图像处理 在小波域中分析信号和图像

    一 简述 小波变换是用于分析特征在不同尺度上变化的数据的数学工具 对于信号 特征可以是随时间变化的频率 瞬态或缓慢变化的趋势 对于图像 特征包括边缘和纹理 小波变换主要是为了解决傅立叶变换的局限性而创建的 傅立叶分析是将信号分解为特定频率的
  • sql如何取出前面3行的数据

    sql中如何取出前面3行的数据 用limit 3限制就好 SELECT from tmp test1 order by share desc LIMIT 3 得到结果集
  • Java基础——Java中的枚举类(深入理解,配合代码学习更轻松)

    Java中的枚举类 枚举类的使用 类的对象只有有限个 确定的 比如 星期 一 二三 四 五 六 日 当需要定义一组常量时 强烈建议使用枚举类 配合代码来理解一下 自定义枚举类 JDK5 0之前的版本采用的方式 package com hau
  • 再读红宝书(第四版) 第五章 基本引用类型

    引用值 或者对象 是某个特定引用类型的实例 在 ECMAScript 中 引用类型是把数据和功能组织到一起的结构 经常被人错误地称作 类 虽然从技术上讲 JavaScript 是一门面向对象语言 但ECMAScript 缺少传统的面向对象编
  • 点亮LED实现按住不亮,松手点亮

    include
  • pandas导出到Excel报URLS数量超出65530警告

    今天在整理数据时报警告 gt gt gt df all to excel xxxx xlsx index False home microfat local lib python3 6 site packages xlsxwriter wo
  • 最新数据库流行度最新排名(每月更新)

    2023年09月数据库流行度最新排名 TOP DB顶级数据库索引是通过分析在谷歌上搜索数据库名称的频率来创建的 一个数据库被搜索的次数越多 这个数据库就被认为越受欢迎 这是一个领先指标 原始数据来自谷歌Trends 如果您相信集体智慧 那么
  • LVMforLinux测试报告(转)

    LVMforLinux测试报告 转 more 一 测试系统环境 系统平台 Red Hat Linux Advanced Server 2 1 内核版本 2 4 18 服务器 DELL 6300 LVM内核支持版本 1 0 1 LVM工具版本
  • Pandas知识点-合并操作merge

    Pandas知识点 合并操作merge merge 方法是Pandas中的合并操作 在数据处理过程中很常用 本文介绍merge 方法的具体用法 一 基础合并操作 merge left right 将两个DataFrame或Series合并到