Pandas 之 merge

news2025/1/25 9:01:48

merge的作用:

merge函数在Python的pandas库中的作用是用来合并两个或多个DataFrame数据表,依据指定的一个或多个键(通常是列名)进行连接操作[1]。

merge函数可以有多种连接类型(如内连接inner、左连接left、右连接right、全连接outer)来组合多个DataFrame列表: 

inner:

内连接(inner join):仅返回键名在两个DataFrame中都存在的行

手动生成两个DataFrame对象

import pandas as pd
left = pd.DataFrame(data=[["K0","K0","A0","B0"], ["K0", "K1","A1","B1"], ["K1", "K0","A2","B2"], ["K2", "K1","A3","B3"]], columns=["key1", "key2","A","B"])
left
right = pd.DataFrame(data=[["K5","K0","C0","D0"], ["K1", "K0","C1","D1"], ["K1", "K0","C2","D2"], ["K2", "K1","C3","D3"]], columns=["key1", "key2","C","D"])
right

 

 

 内连接:

# inner
# F3
result = pd.merge(left,right,how="inner",on = ["key1", "key2"])
result

 

 代码F3讲解:

在此示例中,leftright是待合并的DataFrame,how='inner'用来指定连接方式on=['key1', 'key2']表示根据key1key2这两列进行连接。连接后的结果存储在新的DataFrame result 中

outer:

全连接: 返回左右DataFrame中所有键的所有行,任何一方没有匹配键的行都会用NaN填充缺失的数据。

# outer
# F4
result = pd.merge(left,right,how="outer",on = ["key1", "key2"])
result

 这个图不完整,刚才没有显示完但注释是对的。

 

完整的:

 

left:

左连接: 左连接同样基于键列,但其结果集包含了左DataFrame的所有行。对于这些行,如果它们在右DataFrame中找到匹配的键值,则会将右表对应列的值合并进来;若在右表中找不到匹配项,则相应的位置会被填充NaN或其他默认缺失值。这意味着左连接确保了左表的所有记录都会出现在结果集中。

# left
# F6
result = pd.merge(left,right,how="left",on = ["key1", "key2"])
result

right:

右连接:与左连接相反,右连接保证了右DataFrame的所有行都会出现在结果集中。每行右边数据表中的记录,如果有在左边数据表中匹配的键值,则会合并左表相应列的值;如果没有匹配项,则左边相关位置使用NaN填充。

# right
# F6
result = pd.merge(left,right,how="right",on = ["key1", "key2"])
result

 

 我的疑惑: 还是纵向和横向的问题,

这里的 how="left" 就已经指定了进行左连接操作,即保留 left DataFrame 中的所有行,并根据 key1 和 key2 列与 right DataFrame 进行匹配合并。

axis 参数并不适用于 pd.merge() 函数,它是用于像 pd.concat() 这样的函数,用于指定是沿着行(axis=0)还是列(axis=1)进行拼接操作。在做表连接时无需指定 axis 参数。所以,上述代码去掉 axis=1 后是正确的。


[1]通义千问(2024)AI文本提问.merge的作用https://tongyi.aliyun.com/qianwen/?sessionId=f78ee60c3a39451ca41740527b74eb3e通义千问 (aliyun.com)icon-default.png?t=N7T8https://tongyi.aliyun.com/qianwen/?sessionId=f78ee60c3a39451ca41740527b74eb3e 

 

 

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1495053.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

SmartX 携手 openGauss 社区发布联合方案评测与性能最佳实践 | 附优化方法与测试数据

近日,北京志凌海纳科技有限公司(以下简称 “SmartX”)携手 openGauss 社区完成了 openGauss 数据库基于 SmartX 超融合平台(SMTX OS)和 SmartX 分布式存储平台(SMTX ZBS)的性能测试和调优。 结…

13. C++类使用方式

【类】 C语言使用函数将程序代码模块化,C通过类将代码进一步模块化,类用于将实现一种功能的全局数据、以及操作这些数据的函数集中存储在一起,同时可以设置类成员的访问权限,禁止外部代码使用和篡改本类成员,类成员访…

Vue开发实例(六)实现左侧菜单导航

左侧菜单导航 一、一级菜单二、二级菜单三、三级菜单1、加入相关事件 四、菜单点击跳转1. 创建新页面2. 配置路由3. 菜单中加入路由配置4、处理默认的Main窗口为空的情况 五、动态左侧菜单导航1、动态实现一级菜单2、动态实现二级菜单 一、一级菜单 在之前的Aside.vue中去实现…

Dynamo初学尝试梳理(五)-代码块上

“学而时习之,不亦说乎”,今天接着来,稍微提高点难度(高手直接忽略就行)。 代码块(Code Block),是 dynamo 中可以直接输入 DesignScript 的节点。可以通过双击鼠标左键,快…

JAVA WEB案例-登录校验-日志记录

一 前言 在现代社会中,随着互联网的快速发展,WEB应用的安全性问题变得越来越突出。作为一名程序员,我们不仅要注重WEB应用的功能实现,还需要重视安全性问题。在实际开发中,登录校验是非常重要的安全措施,能…

使用mapbox navigation搭建一个安卓导航 示例

一.代码示例地址: https://github.com/mapbox/mapbox-navigation-android-examples/tree/main 二. 具体步骤: git clone gitgithub.com:mapbox/mapbox-navigation-android-examples.git Go to app/src/main/res/values Look for mapbox_access_token.…

[R] Underline your idea with ggplot2

Preview: # 介绍:之前的教程中,我们学习了如何使条形图或直方图看起来更好 比如: 1. How to select a graph calibrate the geom part 2. How to select variables calibrate the aes part 3. How to add a title calibrate the labs …

Golang各版本的GC详解

go v1.3的标记清除法 清除的第一步:stw将可达对象标记删除未被标记对象 go v1.5三色标记法 从根节点出发,将下一个节点遍历为灰色,放入灰色集合中遍历灰色节点集合,把灰色能到达的节点标记为灰色,把自身标记为黑色&a…

安全增强型 Linux

书接上篇 一查看selinux状态 SELinux的状态: enforcing:强制,每个受限的进程都必然受限 permissive:允许,每个受限的进程违规操作不会被禁止,但会被记录于审计日志 disabled:禁用 相关命令…

SystemVerilog Support

介绍 AMD Vivado™合成支持可以合成的SystemVerilog RTL的子集。这个以下部分介绍了这些数据类型。 针对特定文件的SystemVerilog 默认情况下,Vivado合成工具使用Verilog 2005语法编译*.v文件和*.sv文件使用SystemVerilog语法。要在Vivado IDE中将SystemVerilog作…

**蓝桥OJ 178全球变暖 DFS

蓝桥OJ 178全球变暖 思路: 将每一座岛屿用一个颜色scc代替, 用dx[]和dy[]判断他的上下左右是否需要标记颜色,如果已经标记过颜色或者是海洋就跳过.后面的淹没,实际上就是哪个块上下左右有陆地,那么就不会被淹没,我用一个tag标记,如果上下左右一旦有海洋,tag就变为false.如果tag…

开发者如何选择代码签名证书?

代码签名证书是一种由权威认证机构颁发的数字证书,它允许软件开发者对其代码进行数字签名。这种签名基于公钥基础设施(PKI)技术,使用一对密钥:一个私钥和一个公钥。私钥用于生成签名,而公钥则嵌入到代码签名…

Linux学习-二级指针的使用

目录 ###指针传参时要用二级指针 ###函数体内部想要修改函数外部指针变量值的时候需要使用二级指针(指针变量的地址) ###指针传参时要用二级指针 char *str[5]; int Fun(char **ppstr,int len); ###函数体内部想要修改函数外部指针变量值的时候需要使用二级指针(指针变量的…

GCN原理回顾

Cora_dataset description Cora数据集是一个常用的学术文献用网络数据集,用于研究学术文献分类和图网络分析等任务。 该数据集由机器学习领域的博士论文摘要组成,共计2708篇论文,涵盖了7个不同的学科领域。每篇论文都有一个唯一的ID&#xf…

桥接模式: 消息发送器设计

桥接模式是一种结构型设计模式,它将抽象部分与它的实现部分分离,使它们可以独立地变化。桥接模式通过将抽象和实现分离,可以让它们可以独立地变化,从而提高系统的灵活性和可扩展性。 在桥接模式中,有两个重要的概念&a…

JavaBoy假期如何学习项目?弯道块才是真的快!

至暗时刻 老话说的好,弯道快才是真的快,谁直线不会加油?每到假期都是在座的各位弯道超车的时候。转眼自己已经出来搬了快四年砖头了,偶尔访问下牛客发现行情真是一年不如一年。。。不由得回想起自己春招时候的经历。 回想起2020年…

数据分析-Pandas数据的直方图探查

数据分析-Pandas数据的直方图探查 数据分析和处理中,难免会遇到各种数据,那么数据呈现怎样的规律呢?不管金融数据,风控数据,营销数据等等,莫不如此。如何通过图示展示数据的规律? 数据表&…

【贪心算法】Leetcode 455.分发饼干 376. 摆动序列 53. 最大子数组和

【贪心算法】Leetcode 455 分发饼干 376. 摆动序列【规律很多】53. 最大子数组和 455 分发饼干局部最优推全局最优:尽量用大饼干去满足大胃口的小朋友 376. 摆动序列【规律很多】思想:注意考虑一个坡度留首尾两个点、平坡、首尾 53. 最大子数组和【好思想…

FreeRTOS学习笔记-基于stm32(1)任务基础知识

一、裸机与RTOS 我们使用的32板子是裸机,又称前后台系统。裸机有如下缺点: 1、实时性差。只能一步一步执行任务,比如在一个while循环中,要想执行上一个任务,就必须把下面的任务执行完,循环一遍后才能执行…

从0开始学习NEON(2)

1、前言 继上一个例子,本次继续来学习NEON,本次学习NEON中向量拼接的操作,主要应用在图像的padding中。 https://blog.csdn.net/weixin_42108183/article/details/136440707 2、案例 2.1 案例1 在某些情况下,需要取在每个向量…