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 pd

data1 = {'诗人': ['李白', '苏轼', '李清照', '杜甫', '岳飞'],
         '朝代': ['唐', '北宋', '宋', '唐', '南宋']}

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自动化办公 编程工具
在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【PTA-C语言】实验四-循环结构II

如果代码存在问题,麻烦大家指正 ~ ~有帮助麻烦点个赞 ~ ~ 实验四-循环结构II 7-1 跟奥巴马一起画方块(分数 15)7-2 打印九九口诀表(分数 10)7-3 求符合给定条件的整数集(分数 15)7-4 求特殊方程…

网络虚拟化场景下网络包的发送过程

网络虚拟化有和存储虚拟化类似的地方,例如,它们都是基于 virtio 的,因而在看网络虚拟化的过程中,会看到和存储虚拟化很像的数据结构和原理。但是,网络虚拟化也有自己的特殊性。例如,存储虚拟化是将宿主机上…

爬虫学习-基础(HTTP原理)

目录 一、URL和URI 二、HTTP和HTTPS (1)HTTP (2)HTTPS (3)HTTP与HTTPS区别 (4)HTTPS对HTTP的改进:双问的身份认证 三、TCP协议 (1)TCP三次握手…

2000-2021年上市公司过度负债数据

2000-2021年上市公司过度负债数据 1、时间:2000-2021年 2、指标: 证券代码、证券简称、会计期间、上市日期、行业代码、行业名称、是否剔除ST或*ST股、是否剔除当年新上市、已经退市或被暂停退市的公司、产权性质、盈利能力、杠杆率行业中位数、成长性…

ELK高级搜索,深度详解ElasticStack技术栈-下篇

前言:ELK高级搜索,深度详解ElasticStack技术栈-上篇 14. search搜索入门 14.1. 搜索语法入门 14.1.1 query string search 无条件搜索所有 GET /book/_search结果: {"took" : 969,"timed_out" : false,"_shar…

架构图是什么,怎么做?

架构图是一种用来描述系统或软件的结构和组成的图形表示。它展示了系统中各个组件之间的关系、交互和功能。通过绘制架构图,可以更好地理解和沟通系统的设计和实现。 绘制架构图的软件 目前市场上有许多用于绘制架构图的软件工具,下面简单…

Conmi的正确答案——“xxx.sh: 行 2: $‘\r‘: 未找到命令”

Ubuntu版本:23.10(桌面版) 问题原因: 这个sh文件被window编辑后会以DOS格式保存,但linux格式中回车只认“\n”,而DOS格式的回车则是“\r\n”。 解决方案: 使用nano打开一次文件,并且…

有两个篮子,分别为A 和 B,篮子A里装有鸡蛋,篮子B里装有苹 果,请用面向对象的思想实现两个篮子里的物品交换

问题: 有两个篮子,分别为A 和 B,篮子A里装有鸡蛋,篮子B里装有苹 果,请用面向对象的思想实现两个篮子里的物品交换 代码 package cn.ljh.algorithmic;/*** author JH*/ public class Demo07 {public static void main…

git rebase冲突说明(base\remote\local概念说明)

主线日志及修改 $ git log master -p commit 31213fad6150b9899c7e6b27b245aaa69d2fdcff (master) Author: Date: Tue Nov 28 10:19:53 2023 08004diff --git a/123.txt b/123.txt index 294d779..a712711 100644 --- a/123.txtb/123.txt-1,3 1,4 123 4^Mcommit a77b518156…

使用SpringBoot和ZXing实现二维码生成与解析

一、ZXing简介 ZXing是一个开源的,用Java实现的多种格式的1D/2D条码图像处理库。它包含了用于解析多种格式的1D/2D条形码的工具类,目标是能够对QR编码,Data Matrix, UPC的1D条形码进行解码。在二维码编制上,ZXing巧妙地利用构成计…

【Linux】命令行参数

文章目录 前言一、C语言main函数的参数二、环境变量总结 前言 我们在Linux命令行输入命令的时候,一般都会跟上一些参数选项,比如l命令,ls -a -l。以前我总是觉得这是理所当然的,没深究其本质究竟是什么,今天才终于知道…

180天Java从小白到就业-Day03-03Java位运算符、赋值运算符、数据交换的三种方式

1. 位运算符 Q:为什么要学习位运算 A:由于其运算效率更高,在JDK源码(例如ArrayList、HashMap)中大量使用位运算,想要看懂JDK源码必须懂位预算,但是在公司开发业务系统时位运算使用并不多。 Q…

N-135基于springboot,vue高校图书馆管理系统

开发工具:IDEA 服务器:Tomcat9.0, jdk1.8 项目构建:maven 数据库:mysql5.7 系统分前后台,项目采用前后端分离 前端技术:vueelementUI 服务端技术:springbootmybatisredis 本项…

深入理解同源限制:网络安全的守护者(上)

🤍 前端开发工程师(主业)、技术博主(副业)、已过CET6 🍨 阿珊和她的猫_CSDN个人主页 🕠 牛客高级专题作者、在牛客打造高质量专栏《前端面试必备》 🍚 蓝桥云课签约作者、已在蓝桥云…

【可视化】图像分割中标签label与预测mask的两种可视化方法

前两天进行一个分割项目,模型训练完成后需要对分割效果可视化,特此记录两种方法。 示例中用到的原图、label和mask如下所示: 1. 标签label填充,预测mask勾线 第一种是标签label填充样覆盖,预测mask采用勾线描边的方式…

Oracle ORA12514 监听程序当前无法识别连接描述符中请求的服务

最简单的有可能是你的服务还没有开启,需要启动服务!!!! 在连接数据库的时候,有时会遇到一个“ORA12514:监听程序当前无法识别连接描述符中请求的服务”的错误,这个错误其实就是数据…

网页中的json文档,怎么保存到本地

火狐浏览器操作方法 方法一 右键——>另存页面为 方法二 点击右边的三条横线——>另存页面为 谷歌浏览器操作方法 方法一 右键——>另存为 方法二

LZW的编码和解码

不同于哈弗曼编码针对于每个元素编码,LZW主要针对字符串的编码优化,也就是把出现频率高的字符串压缩成一个字符表示,这也是大名鼎鼎的GIF采用的压缩格式。下面我将从三个角度谈谈我的一些理解,文章主要参考了这位大佬:…

SQL server 2016安装

1、关系数据库的基本概念。 行:每行成为一条“记录”或“元组”,用于描述一个对象的信息。 列:每列称为一个“字段”或“属性”,用于描述对象的一个属性。 2、主键与外键。 主键:键,即关键字。主键由一个或…

[传智杯 #2 决赛] 补刀

题目描述 UIM 在写程序的空闲玩一款 MOBA 游戏。 当敌方的小兵进入到我方防御塔的范围内,就会持续受到防御塔造成的伤害;当然我方英雄也可以对它造成伤害。当小兵的血量降到了 0 或者更低,就会被击杀。为了获得经验,UIM 希望在防…