iis服务器助手广告广告
返回顶部
首页 > 资讯 > 后端开发 > Python >Pandas实现两个表的连接功能的方法详解
  • 171
分享到

Pandas实现两个表的连接功能的方法详解

2024-04-02 19:04:59 171人浏览 安东尼

Python 官方文档:入门教程 => 点击学习

摘要

目录准备数据先导入模块输出内容连接内连接外连接左连接右连接上次介绍了pandas的多条件筛选,这些都是一些数据处理的必要技能,也不贪多,咱们每次学习一点。 这次咱们说说pandas的

上次介绍了pandas的多条件筛选,这些都是一些数据处理的必要技能,也不贪多,咱们每次学习一点。

这次咱们说说pandas的两个表的连接技能merge,也就是根据一个表的条件去匹配另一个表的内容。

话不多说,直接正文。

准备数据

先导入模块

import pandas as pd

df1 = pd.DataFrame({
    '姓名': ['张三', '李四', '王五', '刘六', '齐四'],
    '号码': ['123', '456', '789', '987', '654']
})

df2 = pd.DataFrame({
    '姓名': ['张三', '张三', '张三', '李四', '李四', '李四', '李四', '王五', '王五', '刘玉', '胡军', '刘玉', '刘六', '刘六', '刘六', '刘六', '刘克', '刘玉', '齐七', '齐七', '齐七', '齐七', '冯亮', '刘玉', '王云'],

    '号码': ['123', '123', '123', '123', '123', '456', '456', '456', '456', '456', '741', '741', '741', '741', '741', '789', '789', '789', '789', '789', '852', '852', '852', '852', '852'],

    '日期': ['2022-03-13', '2022-03-06', '2022-01-30', '2022-01-04', '2022-02-26', '2022-03-26', '2022-03-06', '2022-01-30', '2022-01-29', '2022-03-13', '2022-03-06', '2022-02-19', '2022-02-04', '2022-03-10', '2022-04-19', '2022-03-10', '2022-01-29', '2022-02-19', '2022-03-06', '2022-03-26', '2022-01-04', '2022-02-04', '2022-04-19', '2022-02-26', '2022-03-06'],

    '方案': ['G1012', 'G1022', 'G1002', 'G1007', 'G1017', 'G1023', 'G1018', 'G1003', 'G1008', 'G1013', 'G1020', 'G1015', 'G1010', 'G1005', 'G1025', 'G1004', 'G1009', 'G1014', 'G1019', 'G1024', 'G1006', 'G1011', 'G1026', 'G1016', 'G1021']
})

输出内容

df1内容

   姓名   号码
0  张三  123
1  李四  456
2  王五  789
3  刘六  987
4  齐四  654

df2内容:

    姓名  号码    日期      方案
0   张三  123  2022-03-13  G1012
1   张三  123  2022-03-06  G1022
2   张三  123  2022-01-30  G1002
3   李四  123  2022-01-04  G1007
4   李四  123  2022-02-26  G1017
5   李四  456  2022-03-26  G1023
6   李四  456  2022-03-06  G1018
7   王五  456  2022-01-30  G1003
8   王五  456  2022-01-29  G1008
9   刘玉  456  2022-03-13  G1013
10  胡军  741  2022-03-06  G1020
11  刘玉  741  2022-02-19  G1015
12  刘六  741  2022-02-04  G1010
13  刘六  741  2022-03-10  G1005
14  刘六  741  2022-04-19  G1025
15  刘六  789  2022-03-10  G1004
16  刘克  789  2022-01-29  G1009
17  刘玉  789  2022-02-19  G1014
18  齐七  789  2022-03-06  G1019
19  齐七  789  2022-03-26  G1024
20  齐七  852  2022-01-04  G1006
21  齐七  852  2022-02-04  G1011
22  冯亮  852  2022-04-19  G1026
23  刘玉  852  2022-02-26  G1016
24  王云  852  2022-03-06  G1021

连接

函数说明:pd.merge(left=df1(需要匹配的原始表), right=df2(被匹配的数据表), on="姓名"(需要匹配的条件列), how="inner"(连接方式))

内连接

how默认为inner:内连接查询特点是df1有匹配的才显示,不匹配的不显示

df = pd.merge(left=df1, right=df2, on="姓名", how="inner")

输出:

    姓名 号码_x 号码_y  日期     方案
0   张三  123  123  2022-03-13  G1012
1   张三  123  123  2022-03-06  G1022
2   张三  123  123  2022-01-30  G1002
3   李四  456  123  2022-01-04  G1007
4   李四  456  123  2022-02-26  G1017
5   李四  456  456  2022-03-26  G1023
6   李四  456  456  2022-03-06  G1018
7   王五  789  456  2022-01-30  G1003
8   王五  789  456  2022-01-29  G1008
9   刘六  987  741  2022-02-04  G1010
10  刘六  987  741  2022-03-10  G1005
11  刘六  987  741  2022-04-19  G1025
12  刘六  987  789  2022-03-10  G1004

df1表里需要匹配的姓名里,在df2里面能匹配上姓名的都会列出来,而匹配不上的,都不会列出来,包括df1里面的内容

小提示:如果两表有相同列名的,会自动在列名后面加_x,_y来区分

外连接

how="outer"为外连接:查询特点是无论匹不匹配都显示,对应的值没有则显示空

df = pd.merge(left=df1, right=df2, on="姓名", how="outer")

输出:

    姓名 号码_x 号码_y   日期     方案
0   张三  123  123  2022-03-13  G1012
1   张三  123  123  2022-03-06  G1022
2   张三  123  123  2022-01-30  G1002
3   李四  456  123  2022-01-04  G1007
4   李四  456  123  2022-02-26  G1017
5   李四  456  456  2022-03-26  G1023
6   李四  456  456  2022-03-06  G1018
7   王五  789  456  2022-01-30  G1003
8   王五  789  456  2022-01-29  G1008
9   刘六  987  741  2022-02-04  G1010
10  刘六  987  741  2022-03-10  G1005
11  刘六  987  741  2022-04-19  G1025
12  刘六  987  789  2022-03-10  G1004
13  齐四  654  NaN         NaN    NaN
14  刘玉  NaN  456  2022-03-13  G1013
15  刘玉  NaN  741  2022-02-19  G1015
16  刘玉  NaN  789  2022-02-19  G1014
17  刘玉  NaN  852  2022-02-26  G1016
18  胡军  NaN  741  2022-03-06  G1020
19  刘克  NaN  789  2022-01-29  G1009
20  齐七  NaN  789  2022-03-06  G1019
21  齐七  NaN  789  2022-03-26  G1024
22  齐七  NaN  852  2022-01-04  G1006
23  齐七  NaN  852  2022-02-04  G1011
24  冯亮  NaN  852  2022-04-19  G1026
25  王云  NaN  852  2022-03-06  G1021

df1表里索引13里的齐四无匹配,是空值,而在df2里面的内容都会列出来,和df1匹配不上的其它列的内容也是空值

注意:这有点互相匹配的意思哟

左连接

how="left"为左连接:查询表示左边的值全部显示,如右边无匹配则显示空。但是右边有的值匹配不了左边则不显示

df = pd.merge(left=df1, right=df2, on="姓名", how="outer")

输出:

    姓名 号码_x 号码_y   日期     方案
0   张三  123  123  2022-03-13  G1012
1   张三  123  123  2022-03-06  G1022
2   张三  123  123  2022-01-30  G1002
3   李四  456  123  2022-01-04  G1007
4   李四  456  123  2022-02-26  G1017
5   李四  456  456  2022-03-26  G1023
6   李四  456  456  2022-03-06  G1018
7   王五  789  456  2022-01-30  G1003
8   王五  789  456  2022-01-29  G1008
9   刘六  987  741  2022-02-04  G1010
10  刘六  987  741  2022-03-10  G1005
11  刘六  987  741  2022-04-19  G1025
12  刘六  987  789  2022-03-10  G1004
13  齐四  654  NaN         NaN    NaN

df1表里索引13里的齐四还是无匹配,是空值,而在df2里面的内容就不会列出来了

右连接

how="right"为右连接:与左连接相反

df = pd.merge(left=df1, right=df2, on="姓名", how="right")

输出:

    姓名 号码_x 号码_y          日期     方案
0   张三  123  123  2022-03-13  G1012
1   张三  123  123  2022-03-06  G1022
2   张三  123  123  2022-01-30  G1002
3   李四  456  123  2022-01-04  G1007
4   李四  456  123  2022-02-26  G1017
5   李四  456  456  2022-03-26  G1023
6   李四  456  456  2022-03-06  G1018
7   王五  789  456  2022-01-30  G1003
8   王五  789  456  2022-01-29  G1008
9   刘玉  NaN  456  2022-03-13  G1013
10  胡军  NaN  741  2022-03-06  G1020
11  刘玉  NaN  741  2022-02-19  G1015
12  刘六  987  741  2022-02-04  G1010
13  刘六  987  741  2022-03-10  G1005
14  刘六  987  741  2022-04-19  G1025
15  刘六  987  789  2022-03-10  G1004
16  刘克  NaN  789  2022-01-29  G1009
17  刘玉  NaN  789  2022-02-19  G1014
18  齐七  NaN  789  2022-03-06  G1019
19  齐七  NaN  789  2022-03-26  G1024
20  齐七  NaN  852  2022-01-04  G1006
21  齐七  NaN  852  2022-02-04  G1011
22  冯亮  NaN  852  2022-04-19  G1026
23  刘玉  NaN  852  2022-02-26  G1016
24  王云  NaN  852  2022-03-06  G1021

右连接正好与左连接相反,df1里面匹配不上的不显示,df2里面的内容全都出来了,匹配不上df1的其它列值则为空值

PS这完全是反向匹配呀

到此这篇关于Pandas实现两个表的连接功能的方法详解的文章就介绍到这了,更多相关Pandas表的连接内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

--结束END--

本文标题: Pandas实现两个表的连接功能的方法详解

本文链接: https://www.lsjlt.com/news/120278.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • Pandas实现两个表的连接功能的方法详解
    目录准备数据先导入模块输出内容连接内连接外连接左连接右连接上次介绍了pandas的多条件筛选,这些都是一些数据处理的必要技能,也不贪多,咱们每次学习一点。 这次咱们说说pandas的...
    99+
    2024-04-02
  • 前端实现打印功能的两种方法详解
    目录前言方法一:window.print()   方法二:利用iframe,iframe.contentWindow.print()补充:导出步骤总结:前言 前端...
    99+
    2023-01-06
    前端实现打印功能 前端打印语句 前端打印功能实现
  • Pandas实现数据拼接的操作方法详解
    目录merge 操作merge 拼接方式merge 举例join 操作join 举例concat 操作concat 举例append 举例数据科学领域日常使用 Python 处理大规...
    99+
    2024-04-02
  • Python Pandas两个表格内容模糊匹配的实现
    目录一、方法21. 导入库2. 构建关键词3. 构建句子4. 建立统一索引5. 表连接6. 关键词匹配二、方法21. 构建字典2. 关键词匹配3. 结果展示4. 匹配结果展开总结一、...
    99+
    2024-04-02
  • TypeScript合并两个排序链表的方法详解
    目录前言思路分析实现代码测试用例示例代码前言 给定两个递增排序的链表,如何将这两个链表合并?合并后的链表依然按照递增排序。本文就跟大家分享一种解决方案 思路分析 经过前面的学习,我们...
    99+
    2024-04-02
  • MyBatisPlus+Lombok实现分页功能的方法详解
    目录一、Lombok1、添加Lombok依赖2、安装Lombok插件3、模型类上添加注解二、分页功能1、调用方法传入参数获取返回值2、设置分页拦截器3、运行测试程序一、Lombok ...
    99+
    2024-04-02
  • 两个云服务器之间的连接方法
    以下是两个云服务器之间的主要通信方法: DNS解析:将请求发送到对应的云服务器上。 HTTP:客户端向服务器提出请求,服务器返回响应。 GET和POST:发送请求并接收响应。 CONNECT命令:向服务器发送指令,例如"GET http...
    99+
    2023-10-26
    两个 服务器 方法
  • vue打印功能实现的两种方法总结
    第一种方法:通过npm 安装插件 1,安装 npm install vue-print-nb --save 2,引入 安装好以后在main.js文件中引入 import...
    99+
    2024-04-02
  • Python实现邮件发送功能的方法详解
    目录利用 python 发送普通邮件认识发送邮件流程认识邮件协议smtplib 模块email 包发送邮件小案例发送邮件的避坑总结邮件自动化篇章所需的新模块: smtplib 邮件协...
    99+
    2024-04-02
  • .NET6实现基于JWT的Identity功能方法详解
    目录需求目标原理与思路实现引入Identity组件添加认证服务使用JWT认证和定义授权方式引入认证授权中间件添加JWT配置增加认证用户Model实现认证服务CreateToken方法...
    99+
    2024-04-02
  • SpringCloud实现文件上传功能的方法详解
    目录图片上传搭建项目编写上传功能图片上传 刚才的新增实现中,我们并没有上传图片,接下来我们一起完成图片上传逻辑。 文件的上传并不只是在品牌管理中有需求,以后的其它服务也可能需要,因此...
    99+
    2024-04-02
  • kill一条TCP连接实现方法详解
    目录简介kill活跃的TCP连接实现原理kill空闲的TCP连接使用ss杀死连接使用hping3杀死连接简介 如果你的程序写得有毛病,打开了很多TCP连接,但一直没有关闭,即常见的连...
    99+
    2022-11-13
    kill TCP连接 kill TCP
  • AngularJS实现表单验证功能的方法
    这篇文章主要为大家展示了“AngularJS实现表单验证功能的方法”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“AngularJS实现表单验证功能的方法”这篇文...
    99+
    2024-04-02
  • 详解python连接telnet和ssh的两种方式
    目录Telnet 连接方式ssh连接方式Telnet 连接方式 #!/usr/bin/env python # coding=utf-8 import time import...
    99+
    2024-04-02
  • Golang判断两个链表是否相交的方法详解
    目录算法题:判断2个链表相交方法一:map方法二:首尾相接法算法题:判断2个链表相交 面试中可能会问到的算法题,今天总结一下 方法一:map 步骤: 1.遍历list1,以节点为ke...
    99+
    2023-03-14
    Golang判断链表是否相交 Golang判断链表相交 Golang链表相交
  • JavaScript实现简易计算器功能的两种方法
    本文实例为大家分享了两种JavaScript实现简易计算器功能的具体代码,供大家参考,具体内容如下 1. 使用基本数据类型 注意点: prompt 用户从浏览器输入的任何数据都是字符...
    99+
    2024-04-02
  • 两个云服务器之间的连接方法是
    两个云服务器之间的连接方法可以包括以下几种: HTTP/1.1 Gbps GCP VPN:使用 GCP VPN可以实现双向 IP 认证和加密通信。通过在 Windows Server 2008 或更高版本上安装 GCP,可以使用 VPN...
    99+
    2023-10-27
    两个 服务器 方法
  • Python比较两个日期的两种方法详解
    目录datetimestrptime之前我们曾经分享过:Python获取某一日期是“星期几”的6种方法!实际上,在我们使用Python处理日期/时间的时候,经...
    99+
    2024-04-02
  • WPF仿微信实现截图功能的方法详解
    目录前言 一、ScreenCut.cs 代码如下二、ScreenCut.xaml 代码如下 三、ScreenCutExample.xaml 代码如下每日一笑 肚子...
    99+
    2024-04-02
  • python重用父类功能的两种方式实例详解
    在子类派生的新方法中如何重用父类的功能 方式一:指名道姓调用某一个类下的函数=》不依赖于继承关系 class OldboyPeople: def __init__(self...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作