Pandas教程06:DataFrame.merge数据的合并处理

DataFrame.merge() 是 pandas 库中用于合并两个DataFrame数据的方法。该方法主要用于根据一个或多个键(键可以是列名或索引)将两个 DataFrame 连接在一起,这个过程类似于 SQL 中的 JOIN 操作。

#我的Python教程
#微信公众号:wdPython

1.下面是 DataFrame.merge() 的一些常用参数:
left_on:指定左侧 DataFrame 的键。这可以是列名。默认为 None。
right_on:指定右侧 DataFrame 的键。这可以是列名。默认为 None。
how:指定连接类型。可以是 ‘left’(左连接)、‘right’(右连接)、‘outer’(全连接)或 ‘inner’(内连接,默认)。
indicator:在合并后的 DataFrame 中添加一个指示列,指示哪些行来自左侧 DataFrame,哪些行来自右侧 DataFrame。
sort:对结果进行排序。默认为 False。
suffixes:当左右两个 DataFrame 的键相同时,为避免重复,需要添加后缀。这是一个由两个字符串组成的元组,分别用于左侧和右侧 DataFrame。
copy:是否复制数据。默认为 True。
indicator:是否添加指示列。默认为 False。
validate:用于检查合并操作是否合理的参数。默认为 None。

2.示例用法:现在,我们有两个DataFrame:df1和df2。它们都有一个名为’诗人’的列。我们想要将这两个DataFrame按照’诗人’列进行合并,并得到每个人的名字,性别,年龄和朝代。


import pandas as pddata1 = {'诗人': ['李白', '苏轼', '李清照', '杜甫', '岳飞'],'朝代': ['唐', '北宋', '宋', '唐', '南宋']}print('原始DataFrame数据1'.center(40, '-'))
df1 = pd.DataFrame(data1)
print(df1)data2 = {'诗人': ['李清照', '杜甫', '李白', '苏轼'],'性别': ['女', '男', '男', '男'],'芳龄': [15, 13, 18, 27]}
print('原始DataFrame数据2'.center(40, '-'))
df2 = pd.DataFrame(data2)
print(df2)
print('1.inner(内连接),是默认参数合并数据'.center(40, '-'))
merged_df = df1.merge(df2, on='诗人', how='inner')
print(merged_df)print('2.outer全连接,合并数据'.center(40, '-'))
merged_df = df1.merge(df2, on='诗人', how='outer')
print(merged_df)print('3.left(左连接)合并数据'.center(40, '-'))
merged_df = df1.merge(df2, on='诗人', how='left')
print(merged_df)print('4.right(右连接)合并数据'.center(40, '-'))
merged_df = df1.merge(df2, on='诗人', how='right')
print(merged_df)

输出结果:我们通过on='诗人’参数指定了要按照’诗人’列进行合并。默认情况下,merge()方法会使用内连接(inner join),只会保留两个DataFrame中都有的行。如果你想要保留两个DataFrame中的所有行,可以使用how='outer’参数来执行外连接(outer join)。

-------------原始DataFrame数据1-------------诗人  朝代
0   李白   唐
1   苏轼  北宋
2  李清照   宋
3   杜甫   唐
4   岳飞  南宋
-------------原始DataFrame数据2-------------诗人 性别  芳龄
0  李清照  女  15
1   杜甫  男  13
2   李白  男  18
3   苏轼  男  27
------------1.inner(内连接,是默认参数)合并数据------------诗人  朝代 性别  芳龄
0   李白   唐  男  18
1   苏轼  北宋  男  27
2  李清照   宋  女  15
3   杜甫   唐  男  13
-------------2.outer全连接合并数据-------------诗人  朝代   性别    芳龄
0   李白   唐    男  18.0
1   苏轼  北宋    男  27.0
2  李清照   宋    女  15.0
3   杜甫   唐    男  13.0
4   岳飞  南宋  NaN   NaN
---------3.left(左连接)合并数据----------诗人  朝代   性别    芳龄
0   李白   唐    男  18.0
1   苏轼  北宋    男  27.0
2  李清照   宋    女  15.0
3   杜甫   唐    男  13.0
4   岳飞  南宋  NaN   NaN
------------4.right(右连接)合并数据------------诗人  朝代 性别  芳龄
0  李清照   宋  女  15
1   杜甫   唐  男  13
2   李白   唐  男  18
3   苏轼  北宋  男  27

3.关于参数how用于指定连接类型理解:
在这里插入图片描述
‘left’:左连接,这是默认值。只保留左侧DataFrame中的所有行,如果在键列中没有匹配的行,则填充NaN。

‘right’:右连接。只保留右侧DataFrame中的所有行,如果在键列中没有匹配的行,则填充NaN。
‘outer’:全连接。保留左侧和右侧DataFrame中的所有行,如果在键列中没有匹配的行,则填充NaN。
‘inner’:内连接。只保留在键列中同时出现在左侧和右侧的行。

完毕!!感谢您的收看

----------★★历史博文集合★★----------

我的零基础Python教程,Python入门篇 进阶篇 视频教程 Py安装py项目 Python模块 Python爬虫 Json Xpath 正则表达式 Selenium Etree CssGui程序开发 Tkinter Pyqt5 列表元组字典数据可视化 matplotlib 词云图 Pyecharts 海龟画图 Pandas Bug处理 电脑小知识office自动化办公 编程工具
在这里插入图片描述

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

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

相关文章

opencv知识库:利用cv2.resize()函数进行图像缩放

引言 在numpy知识库:深入理解numpy.resize函数和数组的resize方法中,小编较为详细地探讨了numpy的resize函数背后的机理。从结果来看,numpy.resize函数并不适合对图像进行缩放操作。而opencv中的resize函数虽然和numpy的resize函数同名&…

高校学生宿舍公寓报修维修生活管理系统 微信小程序b2529

本课题要求实现一套基于微信小程序宿舍生活管理系统,系统主要包括(管理员,学生、维修员和卫检员)四个模块等功能。 使用基于微信小程序宿舍生活管理系统相对传统宿舍生活管理系统信息管理方式具备很多优点:首先可以大幅…

AI与控制(二)从优化到最优控制,从动态规划到强化学习--1

优化问题,尤其静态优化问题,在控制系统设计中随处可见,例如基于燃油经济性和驾驶体验的多目标优化的汽车发动机 MAP 标定,基于性能指标优化的飞行器结构设计参数优化,以实验数据与模型输出匹配为目标的电池 RC 等效电路…

hbase Master is initializing

问题如下: ERROR: org.apache.hadoop.hbase.PleaseHoldException: Master is initializing ERROR: org.apache.hadoop.hbase.PleaseHoldException: Master is initializingat org.apache.hadoop.hbase.master.HMaster.checkInitialized(HMaster.java:2452)at org.…

C++二维数组名到底代表个啥

题目先导 int a[3][4]; 则对数组元素a[i][j]正确的引用是*(*(ai)j)先翻译一下这个*(*(ai)j),即a后移i解引用,再后移j再解引用,这么看来a就应该是个二维数组,第一层存储行向量,一次解引用获得行向量的地址,…

PaddleOCR学习笔记

Paddle 功能特性 PP-OCR系列模型列表 https://github.com/PaddlePaddle/PaddleOCR#%EF%B8%8F-pp-ocr%E7%B3%BB%E5%88%97%E6%A8%A1%E5%9E%8B%E5%88%97%E8%A1%A8%E6%9B%B4%E6%96%B0%E4%B8%AD PP-OCR系列模型列表(V4,2023年8月1日更新) 配置文…

【阿里云】图像识别 智能分类识别 增加网络控制功能点(三)

一、增加网络控制功能 实现需求TCP 心跳机制解决Soket异常断开问题 二、Linux内核提供了通过sysctl命令查看和配置TCP KeepAlive参数的方法。 查看当前系统的TCP KeepAlive参数修改TCP KeepAlive参数 三、C语言实现TCP KeepAlive功能 四、setsockopt用于设置套接字选项的系…

基于STM32的四轴飞行器的控制系统(论文+源码)

1.系统设计 本次基于stm32单片机的四轴飞行器控制系统主要包括硬件和软件这两大部分,其中硬件部分是基于单片机的四轴飞行器控制系统实现的基石,其中主要STM32单片机负责整个系统功能的实现;NRF24L01无线模块负责对四轴飞行器的远程控制&…

【蓝桥杯软件赛 零基础备赛20周】第5周——高精度大数运算与队列

文章目录 1. 数组的应用–高精度大数运算1.1 Java和Python计算大数1.2 C/C高精度计算大数1.2.1 高精度加法1.2.2 高精度减法 2. 队列2.1 手写队列2.1.1 C/C手写队列2.1.2 Java手写队列2.1.3 Python手写队列 2.2 C STL队列queue2.3 Java队列Queue2.4 Python队列Queue和deque2.5 …

1688API接口系列,1688开放平台接口使用方案(商品详情数据+搜索商品列表+商家订单类)

1688商品详情接口是指1688平台提供的API接口,用于获取商品详情信息。通过该接口,您可以获取到商品的详细信息,包括商品标题、价格、库存、描述、图片等。 要使用1688商品详情接口,您需要先申请1688的API权限,并获取ac…

仿京东淘宝商品列表筛选组件:实现一个高效的侧边栏弹框筛选功能

仿京东淘宝商品列表筛选组件:实现一个高效的侧边栏弹框筛选功能 一、引言 随着电子商务的快速发展,用户体验成为了竞争的关键因素。在众多的电商网站中,如京东和淘宝,商品列表筛选功能为用户提供了便捷的途径来找到心仪的商品。本…

Clion+Ubuntu(WSL)+MySQL8.0开发环境搭建

1. 下载 MySQL 源码 访问 MySQL 官方网站(MySQL :: Download MySQL Community Server)并下载 MySQL 8.0 的源码包(mysql-boost-8.0.31.tar.gz)。 2. 安装编译依赖 1)更换镜像源 参考:Linux Ubuntu 修改…

多线程06 单例模式,阻塞队列以及模拟实现

前言 上篇文章我们讲了wait和notify两个方法的使用.至此,多线程的一些基本操作就已经结束了,今天我们来谈谈多线程的一些简单应用场景. 单例模式 单例模式,顾名思义,只有一个实例的模式,我们有两种实现方式,分别是懒汉式和饿汉式,我们来分别给出代码. 饿汉式(此处的饿表示创建实…

使用 Go 构建高性能的命令行工具

命令行工具(CLI)在软件开发中扮演着重要的角色,尤其是在自动化工具、开发工具链和服务器管理等领域。Go 语言以其简洁性和高性能而闻名,非常适合用来创建强大且高效的 CLI 工具。本文将详细介绍如何使用 Go 语言来构建 CLI 应用&a…

Concurrent Security of Anonymous Credentials Light, Revisited

目录 摘要引言 摘要 我们重新审视了著名的匿名证书轻(ACL)方案(Baldimtsi和Lysyanskaya,CCS’13)的并发安全保证。该方案最初被证明在按顺序执行时是安全的,其并发安全性仍然是一个悬而未决的问题。Benham…

一致性Hash算法

Hash算法 哈希算法将任意长度的二进制值映射为较短的固定长度的二进制值,这个小的二进制值称为哈希值。哈希值是一段数据唯一且极其紧凑的数值表示形式。 Hash算法在安全加密领域MD5、SHA等加密算法,数据存储和查找的Hash表等方面均有应用。Hash表的数…

MOS管的静电击穿问题

MOS管输入电阻很高,为什么一遇到静电就不行了? 静电击穿:由于静电的积累导致电压超过了原本MOS的绝缘能力,导致电流突然增大的现象。 MOS管基础知识了解: G极(gate)—栅极,不用说比较好认 S极(source)—源…

分享一个国内可用的免费GPT4-AI提问AI绘画网站工具

一、前言 ChatGPT GPT4.0,Midjourney绘画,相信对大家应该不感到陌生吧?简单来说,GPT-4技术比之前的GPT-3.5相对来说更加智能,会根据用户的要求生成多种内容甚至也可以和用户进行创作交流。 然而,GPT-4对普…

2017年五一杯数学建模A题公交车排班问题解题全过程文档及程序

2017年五一杯数学建模 A题 公交车排班问题 原题再现 随着徐州市经济的快速发展,公交车系统对于人们的出行扮演着越来越重要的角色。在公交车资源有限的情况下,合理的编排公交车的行车计划成为公交公司亟待解决的问题。以下给出公交车排班问题中的部分名…

vue+echarts实现依赖关系无向网络拓扑结图节点折叠展开策略

目录 引言 一、设计 1. 树状图(不方便呈现节点之间的关系,次要考虑) 2. 力引导依赖关系图 二、力引导关系图 三、如何实现节点的Open Or Fold 1. 设计逻辑 节点展开细节 节点收缩细节 代码实现 四、结果呈现 五、完整代码 引言 我…