当前位置: 首页 > news >正文

Python数据框的合并(一) -- merge函数

目录

 

1 merge 函数详解

1.1 左连接(Left Join):

1.2 右连接(Right Join):

1.3 全连接(Full Join 或 Outer Join):

2 代码示例

2.1 加载模块并创建示例数据框

2.2 左连接

2.3 右连接

2.4 全连接


 

1 merge 函数详解

        merge 函数通常与pandas库关联,用于合并两个或多个DataFrame,主要有三种合并方式:左连接、右连接和全连接,三种连接方式如下:

1.1 左连接(Left Join):

        a.保留左DataFrame的所有行。
        b. 如果右DataFrame中有匹配的行,则合并这些行的值。
        c.如果右DataFrame中没有匹配的行,则结果中的相应列将包含缺失值(NaN)。
        d.在pandas中,可以使用 merge(left, right, on='key', how='left') 来实现左连接,其中 'key' 是两个DataFrame中用于匹配的列名。

1.2 右连接(Right Join):

        a. 与左连接相反,右连接保留右DataFrame的所有行。
        b. 如果左DataFrame中有匹配的行,则合并这些行的值。
        c.如果左DataFrame中没有匹配的行,则结果中的相应列将包含缺失值(NaN)。
        d.在pandas中,虽然 how='right' 是理论上存在的选项,但更常见的做法是先进行左连接,然后交换两个DataFrame的顺序再进行左连接,以达到右连接的效果。

1.3 全连接(Full Join 或 Outer Join):

        a.全连接返回左DataFrame和右DataFrame中的所有行。
        b.如果两个DataFrame中有匹配的行,则合并这些行的值。
        c.如果没有匹配的行,则结果中的相应列将包含缺失值(NaN)。
        d.在pandas中,可以使用 merge(left, right, on='key', how='outer') 来实现全连接。

2 代码示例

2.1 加载模块并创建示例数据框

        首先,我们需要创建两个简单的DataFrame作为示例数据:

import pandas as pd  # 创建左DataFrame  
left = pd.DataFrame({  'key': ['A', 'B', 'C', 'D'],  'value': ['left_A', 'left_B', 'left_C', 'left_D']  
})  # 创建右DataFrame  
right = pd.DataFrame({  'key': ['B', 'C', 'D', 'E'],  'value': ['right_B', 'right_C', 'right_D', 'right_E']  
})  # 打印原始DataFrame  
print("Left DataFrame:")  
print(left)  
print("\nRight DataFrame:")  
print(right)

2.2 左连接

# 左连接
left_join = pd.merge(left, right, on='key', how='left')
print("\nLeft Join:")
print(left_join)

2.3 右连接

        pandas的merge函数没有直接的how='right'选项,但可以通过交换左右DataFrame的位置来实现右连接:

# 右连接(通过交换左右DataFrame的位置)
right_join = pd.merge(right, left, on='key', how='left')
# 注意:这里我们交换了left和right的位置,并使用了'left'作为how参数
print("\nRight Join (by swapping DataFrames and using 'left' how):")
print(right_join)

2.4 全连接

# 全连接(外连接)
full_join = pd.merge(left, right, on='key', how='outer')
print("\nFull Join (Outer Join):")
print(full_join)

 

 

相关文章:

Python数据框的合并(一) -- merge函数

目录 1 merge 函数详解 1.1 左连接(Left Join): 1.2 右连接(Right Join): 1.3 全连接(Full Join 或 Outer Join): 2 代码示例 2.1 加载模块并创建示例数据框 2.2 左连接 2.3 右连接 2.4 全连接 1 m…...

【Qt秘籍】[010]-Qt常用控件

一、控件概述 在GUI(图形用户界面)开发领域,Qt无疑是众多开发者心中的首选框架之一。它不仅跨平台、功能强大,而且拥有丰富且灵活的控件库,使得开发者能够快速构建美观、高效的用户界面。对于初学者而言&#xff0…...

TypeScript基础教程学习

菜鸟教程 TypeScript基础类型 数字类型 number 双精度 64 位浮点值。它可以用来表示整数和分数。 let binaryLiteral: number 0b1010; // 二进制 let octalLiteral: number 0o744; // 八进制 let decLiteral: number 6; // 十进制 let hexLiteral: number 0xf00d…...

JavaSE面试

①.简述面向对象的三大特征 封装、继承、多态 1.封装: 概念: 是将类的某些信息隐藏在类的内部,不允许外部程序直接访问,而是通过该类提供的方法来实现对隐藏信息的操作和访问。 好处 : ①便于修改,增强了代…...

安全漏洞扫描工具

常用的安全漏洞扫描工具涵盖了网络扫描、Web应用扫描、系统漏洞检测等多个方面,以下是一些业界广泛认可和常用的工具: Nmap - 网络映射和安全审计工具,用于发现网络上的主机和服务,识别操作系统,枚举开放端口&#xff…...

前端开发部署:Visual Studio Code + vue

〇 说明 本教程全部采用默认安装路径,因为在进行自定义路径安装的时候,需要配置各种环境变量,在这个配置过程中,可能出现各种很混乱的问题。 一 安装Node.js 1 下载https://nodejs.org/en 2 按照默认NEXT执行 C:\Program Files…...

基于Sentry+OpenTelemetry实现微服务前后端全链路监控

文章目录 前⾔背景技术⽅案Sentry私有化部署部署环境准备 项目集成前端后端agent探针集成sentry sdk集成增强探针为⽇志注⼊TraceID异常处理SDK⾃定义开发sentry sdk⾃定义开发⾃定义SentryEvent注⼊otel追踪信息⾃定义全局异常上报issue事件新增动态过滤功能 Java Agent Exten…...

jquery.datetimepicker无法添加清除按钮的问题

项目场景: 自从决定用现有新技术实现CRM老项目起,就开始了我的折腾之路,最近一直在折腾前端页面,不像后端Java,写的有问题运行会报错,大多数报错一搜就能找到解决方案,前端这个倒好&#xff0c…...

Qt中解决编译中文乱码和编译失败的问题

解决方法 1.使用#pragma execution_character_set(“utf-8”) QT5中在cpp中使用#pragma execution_character_set(“utf-8”)解决中文乱码,不过这里要求该源代码必须保存成带Bom的utf-8格式,这也是有些在网上下载的代码,加上这句源代码后还…...

Android状态栏适配问题

Android状态栏适配是一个老生常谈的问题,那么我又拿出来讲了,因为这个东西确实太重要了,基本上每个项目都用得到。状态栏总共有几种形态。第一,让状态栏颜色跟应用主色调一致,布局内容不占有状态栏的位置。第二&#x…...

如何为色盲适配图形用户界面

首发日期 2024-05-25, 以下为原文内容: 答案很简单: 把彩色去掉, 测试. 色盲, 正式名称 色觉异常. 众所周知, 色盲分不清颜色. 如果用户界面设计的不合理, 比如不同项目只使用颜色区分, 而没有形状区分, 那么色盲使用起来就会非常难受, 甚至无法使用. 色盲中最严重的情况称为…...

【爬虫实战项目一】Python爬取豆瓣电影榜单数据

目录 一、环境准备 二、编写代码 2.1 分页分析 2.2 编码 一、环境准备 安装requests和lxml pip install requests pip install lxml 二、编写代码 2.1 分页分析 编写代码前我们先看看榜单的url 我们假如要爬取五页的数据,那么五个url分别是: htt…...

AI-知识库搭建(一)腾讯云向量数据库使用

一、AI知识库 将已知的问答知识,问题和答案转变成向量存储在向量数据库,在查找答案时,输入问题,将问题向量化,匹配向量库的问题,将向量相似度最高的问题筛选出来,将答案提交。 二、腾讯云向量数…...

AI数据分析:根据Excel表格数据绘制柱形图

工作任务:将Excel文件中2013年至2019年间线上图书的销售额,以条形图的形式呈现,每个条形的高度代表相应年份的销售额,同时在每个条形上方标注具体的销售额数值 在deepseek中输入提示词: 你是一个Python编程专家&#…...

基于协调过滤算法商品推荐系统的设计

管理员账户功能包括:系统首页,个人中心,商品管理,论坛管理,商品资讯管理 前台账户功能包括:系统首页,个人中心,论坛,商品资讯,商家,商品 开发系统…...

CS1061 “HtmlHelper”未包含“Partial”的定义,并且找不到可接受第一个“HtmlHelper”类型参数的可访问扩展方法“Partial”

严重性 代码 说明 项目 文件 行 禁止显示状态 错误 CS1061 “HtmlHelper”未包含“Partial”的定义,并且找不到可接受第一个“HtmlHelper”类型参数的可访问扩展方法“Partial”(是否缺少 using 指令或程序集引用?) 14_Views_Message_E…...

大数据运维学习笔记之flink standalone flink on yarn集群搭建 —— 筑梦之路

...

在知识的海洋中航行:问题的演变与智慧的追求

在信息技术迅猛发展的今天,互联网和人工智能已成为我们生活中不可或缺的一部分。它们像是一座座灯塔,照亮了知识的海洋,使得曾经难以触及的知识变得触手可及。随着这些技术的普及,越来越多的问题能够迅速得到答案。然而&#xff0…...

splice()、slice()、split()三种方法的区别

slice slice() 方法返回一个新的数组对象,这一对象是一个由 start 和 end 决定的原数组的浅拷贝(包括 start,不包括 end),其中 start 和 end 代表了数组元素的索引。原始数组不会被改变。 const animals [ant, bison…...

iOS 之homebrew ruby cocoapods 安装

cocoapods安装需要ruby,更新ruby需要rvm,下载rvm需要gpg,下载gpg需要homebrew,所以安装顺序是homebrew->gpg->rvm->ruby-cocoapods Rvm 官网: RVM: Ruby Version Manager - RVM Ruby Version Manager - Docum…...

RabbitMQ-C测试框架深度解析:单元测试、集成测试与模糊测试

RabbitMQ-C测试框架深度解析:单元测试、集成测试与模糊测试 【免费下载链接】rabbitmq-c RabbitMQ C client 项目地址: https://gitcode.com/gh_mirrors/ra/rabbitmq-c RabbitMQ-C是一个功能强大的RabbitMQ C客户端库,为确保其稳定性和可靠性&…...

【稀缺首发】Midjourney等距视角工业设计协议(ISO/IEC 21827-2024兼容版):含12类建筑/机械/游戏资产等距规范库,仅限前500名开发者领取

更多请点击: https://intelliparadigm.com 第一章:等距视角工业设计协议的范式演进与ISO/IEC 21827-2024兼容性解析 等距视角工业设计协议(Isometric Industrial Design Protocol, IIDP)已从早期的CAD渲染辅助规范,逐…...

不只是标定:挖掘OpenCV findCirclesGrid在工业视觉中的另类玩法与参数调优

超越标定:OpenCV findCirclesGrid在工业视觉中的高阶应用与参数调优实战 在工业视觉领域,圆形网格检测一直扮演着关键角色。传统认知中,OpenCV的findCirclesGrid函数常被简化为相机标定的辅助工具,但其底层算法蕴含的几何约束与模…...

ITK-SNAP:掌握医学图像分割的5个关键步骤

ITK-SNAP:掌握医学图像分割的5个关键步骤 【免费下载链接】itksnap ITK-SNAP medical image segmentation tool 项目地址: https://gitcode.com/gh_mirrors/it/itksnap ITK-SNAP是一款功能强大的开源医学图像分析软件,专门用于3D医学影像的分割、…...

天地协同:卫星如何成为5G物联网“组合拳”的关键一环

未来的物联网连接格局并非“卫星取代地面”或“地面压制卫星”的零和博弈,而是一个基于场景需求、优势互补的“组合式”解决方案。卫星连接的价值在于补充和增强更广泛的连接组合,与5G等地面蜂窝网络协同工作,共同构建一张无处不在、经济高效…...

开源AI中间人代理工具深度解析:从MITM原理到AI API调试实践

1. 项目概述:一个开源中间人代理工具的深度解析最近在开源社区里,一个名为nsampre/openclaw-anthropic-mitm的项目引起了我的注意。光看这个标题,可能很多朋友会有点懵,这串字符组合到底意味着什么?简单来说&#xff0…...

从零构建高性能内存键值存储:Memvault架构设计与实现详解

1. 项目概述:一个为内存数据打造的“保险箱”最近在折腾一些需要处理大量临时数据的项目,比如实时计算、缓存中间层,还有那种对延迟极其敏感的游戏服务器。这类场景下,Redis这类内存数据库是首选,但总感觉有点“杀鸡用…...

基于ARM核心板的工业无线示教器开发全流程解析

1. 项目概述:当工业机器人遇上“掌上大脑”在工业自动化领域,示教器是人与机器人交互的核心枢纽。传统的示教器,往往体积庞大、线缆缠绕、成本高昂,并且高度依赖特定的控制器硬件。作为一名长期混迹于工控和嵌入式开发一线的工程师…...

基于树莓派的智能直播状态指示器:物联网与API轮询实践

1. 项目概述与核心价值 如果你和我一样,经常在Ustream或Google Hangouts上观看固定的直播节目,或者自己就是一名内容创作者,那你肯定理解那种“直播是否开始了”的焦虑。是继续刷新页面,还是去做点别的?对于家庭或小型…...

用操作系统类比彻底搞懂 AI Agent:进程、系统调用与上下文窗口

用操作系统类比彻底搞懂 AI Agent:进程、系统调用与上下文窗口 引言 很多人第一次接触 AI Agent,会立刻被一堆新词包围:Tool Use、Function Calling、RAG、Memory、Orchestrator、Multi-Agent、Context Compression。 这些词看起来很新&#…...