Pandas中不同类型的join操作

Pandas模块包含各种功能,可以在数据框上执行各种操作,如join,concatenate,delete,add等。在本文中,我们将讨论可以在Pandas数据框上执行的各种类型的join操作。Pandas中有五种类型的Join。

为了理解不同类型的连接,我们将首先创建两个DataFrame,即a和b。

Dataframe a:

# importing pandasimport pandas as pd# Creating dataframe a
a = pd.DataFrame()# Creating Dictionary
d = {'id': [1, 2, 10, 12], 'val1': ['a', 'b', 'c', 'd']}a = pd.DataFrame(d)# printing the dataframe
a

在这里插入图片描述
DataFrame b:

# importing pandas
import pandas as pd# Creating dataframe b
b = pd.DataFrame()# Creating dictionary
d = {'id': [1, 2, 9, 8],'val1': ['p', 'q', 'r', 's']}
b = pd.DataFrame(d)# printing the dataframe
b

在这里插入图片描述

Pandas中的Joins类型

我们将使用这两个数据框来理解不同类型的连接。

Pandas 内连接

内连接是您将使用的最常见的连接类型。它返回一个Dataframe,其中只有那些具有共同特征的行。这类似于两个集合的交集。

在这里插入图片描述
示例:

# importing pandas
import pandas as pd# Creating dataframe a
a = pd.DataFrame()# Creating Dictionary
d = {'id': [1, 2, 10, 12],'val1': ['a', 'b', 'c', 'd']}a = pd.DataFrame(d)# Creating dataframe b
b = pd.DataFrame()# Creating dictionary
d = {'id': [1, 2, 9, 8],'val1': ['p', 'q', 'r', 's']}
b = pd.DataFrame(d)# inner join
df = pd.merge(a, b, on='id', how='inner')# display dataframe
df

在这里插入图片描述
Pandas 左连接

使用左连接,将显示第一个数据框中的所有记录,而不管第一个数据框中的键是否可以在第二个数据框中找到。然而,对于第二个数据框,只有在第二个数据框中可以在第一个数据框中找到的键的记录才会显示。

在这里插入图片描述
示例:

# importing pandas
import pandas as pd# Creating dataframe a
a = pd.DataFrame()# Creating Dictionary
d = {'id': [1, 2, 10, 12],'val1': ['a', 'b', 'c', 'd']}a = pd.DataFrame(d)# Creating dataframe b
b = pd.DataFrame()# Creating dictionary
d = {'id': [1, 2, 9, 8],'val1': ['p', 'q', 'r', 's']}
b = pd.DataFrame(d)# left outer join
df = pd.merge(a, b, on='id', how='left')# display dataframe
df

在这里插入图片描述
Pandas 右连接

对于右连接,将显示第二个DataFrame中的所有记录。但是,只有第一个数据框中的键可以在第二个数据框中找到的记录才会显示。

在这里插入图片描述
示例:

# importing pandas
import pandas as pd# Creating dataframe a
a = pd.DataFrame()# Creating Dictionary
d = {'id': [1, 2, 10, 12],'val1': ['a', 'b', 'c', 'd']}a = pd.DataFrame(d)# Creating dataframe b
b = pd.DataFrame()# Creating dictionary
d = {'id': [1, 2, 9, 8],'val1': ['p', 'q', 'r', 's']}
b = pd.DataFrame(d)# right outer join
df = pd.merge(a, b, on='id', how='right')# display dataframe
df

在这里插入图片描述
Pandas全连接

一个全连接返回来自左边Dataframe的所有行,以及来自右边Dataframe的所有行,并在可能的情况下匹配行,在其他地方使用NaN。但是如果DataFrame是完整的,那么我们得到相同的输出。

在这里插入图片描述
示例:

# importing pandas
import pandas as pd# Creating dataframe a
a = pd.DataFrame()# Creating Dictionary
d = {'id': [1, 2, 10, 12],'val1': ['a', 'b', 'c', 'd']}a = pd.DataFrame(d)# Creating dataframe b
b = pd.DataFrame()# Creating dictionary
d = {'id': [1, 2, 9, 8],'val1': ['p', 'q', 'r', 's']}
b = pd.DataFrame(d)# full outer join
df = pd.merge(a, b, on='id', how='outer')# display dataframe
df

在这里插入图片描述

Pandas 索引连接

要在索引上合并数据框,请将left_index和right_index参数传递为True,即使用默认的Inner Join在索引上合并两个数据框。

# importing pandas
import pandas as pd# Creating dataframe a
a = pd.DataFrame()# Creating Dictionary
d = {'id': [1, 2, 10, 12],'val1': ['a', 'b', 'c', 'd']}a = pd.DataFrame(d)# Creating dataframe b
b = pd.DataFrame()# Creating dictionary
d = {'id': [1, 2, 9, 8],'val1': ['p', 'q', 'r', 's']}
b = pd.DataFrame(d)# index join
df = pd.merge(a, b, left_index=True, right_index=True)# display dataframe
df

在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

systemverilog/verilog文件操作

1、Verilog文件操作 Verilog具有系统任务和功能,可以打开文件、将值输出到文件、从文件中读取值并加载到其他变量和关闭文件。 1.1 、Verilog文件操作 1.1.1、打开和关闭文件 module tb; // 声明一个变量存储 file handler integer fd; initial begin // 以写权限打开一个文…

编译和链接(翻译环境:预编译+编译+汇编+链接​、运行环境)

一、翻译环境和运行环境​ 在ANSI C的任何一种实现中,存在两个不同的环境。​ 第1种是翻译环境,在这个环境中源代码被转换为可执行的机器指令。​ 第2种是执行环境,它用于实际执行代码。​ VS中编译器:cl.exe ;Linux中…

linux sudo指令提权

sudo指令 sudo 是在linux中用于以超级用户(root)权限执行命令的命令。它允许普通用户在执行特定命令时提升其权限,以完成需要超级用户权限的任务。sudo 的名称是 "superuser do" 的缩写。 格式 接受权限的用户登陆的主机 &#xff…

Python自动化测试【selenium面试题】

一、selenium中如何判断元素是否存在? expected_conditions模块提供了16种判断方法,以下方法是判断元素存在DOM中: presence_of_element_located """ An expectation for checking that an element is present on the DOM of…

【网站项目】基于ssm的青大校园预点餐系统

🙊作者简介:多年一线开发工作经验,分享技术代码帮助学生学习,独立完成自己的项目或者毕业设计。 代码可以私聊博主获取。🌹赠送计算机毕业设计600个选题excel文件,帮助大学选题。赠送开题报告模板&#xff…

算法通关村番外篇-LeetCode编程从0到1系列五

大家好我是苏麟 , 今天带来算法通关村番外篇-LeetCode编程从0到1系列五 . 数学 1523. 在区间范围内统计奇数数目 描述 : 给你两个非负整数 low 和 high 。请你返回 low 和 high 之间(包括二者)奇数的数目。 题目 : LeetCode 1523. 在区间范围内统计奇…

目标检测数据集 - 跌倒检测数据集下载「包含VOC、COCO、YOLO三种格式」

数据集介绍:跌倒检测数据集,真实场景高质量图片数据,涉及场景丰富,比如交通事故跌倒、打架跌倒、运动跌倒、楼梯跌倒、生病跌倒、遮挡行人跌倒、严重遮挡行人跌倒数据;适用实际项目应用:公共场所监控或室内…

存储的基本架构

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 一、存储的需求背景二、自下而上存储架构总结 一、存储的需求背景 1、人的身份信息需要存储 这种信息可以用关系型数据库,例如mysql,那种表…

【2024最新】如何有效搭建自动化测试框架?

前言 最近好多小伙伴都在说接口自动化测试,那么究竟什么是接口自动化测试呢?让我们一起往下看就知道了,首先我们得先弄清楚下面这个问题。 为什么要做(自动化)接口测试? 1、由于现在各个系统的复杂度不断…

限流算法之流量控制的平滑之道:滑动时间窗算法

文章目录 引言简介优点缺点样例样例图样例代码 应用场景结论 引言 在互联网应用中,流量控制是一个重要的组件,用于防止系统过载和保护核心资源。常见的限流算法包括固定窗口算法和滑动时间窗算法。本文将重点介绍滑动时间窗算法,并分析其优缺…

Swift抓取某网站律师内容并做排名筛选

有个很要好的朋友,今天找我说他的朋友欠他钱,因为工程上面的事情,所以一直没拿到款。想让我找个靠谱的律师帮他打官司,因为这个也不是我的强项,也没有这方面的经验。随即从律师网站爬取对应律师口碑以及成功案例&#…

Windows和Linux访问不了GitHub的解决方法

一、Windows访问不了GitHub 问题描述 使用Windows访问GitHub时,出现如下情况,显示无法访问。 解决方案: 打开域名查询网站:https://tool.chinaz.com/dns 输入GitHub的域名,点击立即检测。 出现如下页面&#xff0c…