我的编程空间,编程开发者的网络收藏夹
学习永远不晚

Python pd.merge()函数介绍(全)

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

Python pd.merge()函数介绍(全)

目录

1.前言

2.参数介绍

参数如下:

3.基础案例

3.1on关键字演示

3.2left_on 和 right_on 关键字

3.3left_index 和 right_index 关键字

3.4数据连接的类型

3.4.1


1.前言

在数据合并操作中,有两个操作函数pd.caoncat()pd.merge() 这两个函数在使用过程中经常会拿来比较,只要我们弄懂了其中重要参数的意义,理解每一个函数的用法,就能做到在那种环境适用那个函数,让我们通过本文深入理解pd.merge().

参考链接:https://cloud.tencent.com/developer/article/2070402

2.参数介绍

参数如下:

参数表
参数名作用
left拼接的左侧DataFrame对象
right拼接的右侧DataFrame对象
on要加入的列或索引级别名称。 必须在左侧和右侧DataFrame对象中找到。如果未传递且left_index和right_index为False,则DataFrame中的列的交集将被推断为连接键。
left_on

左侧DataFrame中的列或索引级别用作键。 可以是列名,索引级名称,也可以是长度等于DataFrame长度的数组。

right_on右侧DataFrame中的列或索引级别用作键。 可以是列名,索引级名称,也可以是长度等于DataFrame长度的数组。
left_index如果为True,则使用左侧DataFrame中的索引(行标签)作为其连接键。 对于具有MultiIndex(分层)的DataFrame,级别数必须与右侧DataFrame中的连接键数相匹配。
right_index如果为True,则使用右侧DataFrame中的索引(行标签)作为其连接键。 对于具有MultiIndex(分层)的DataFrame,级别数必须与右侧DataFrame中的连接键数相匹配。
how 默认inner。inner是取交集,outer取并集。比如left:[‘A’,‘B’,‘C’];right[’’A,‘C’,‘D’];inner取交集的话,left中出现的A会和right中出现的买一个A进行匹配拼接,如果没有是B,在right中没有匹配到,则会丢失。’outer’取并集,出现的A会进行一一匹配,没有同时出现的会将缺失的部分添加缺失值。
sort按字典顺序通过连接键对结果DataFrame进行排序。 默认为True,设置为False将在很多情况下显着提高性能。

suffixes

用于重叠列的字符串后缀元组。 默认为(‘x’,’ y’)。
copy始终从传递的DataFrame对象复制数据(默认为True),即使不需要重建索引也是如此。
indicator将一列添加到名为_merge的输出DataFrame,其中包含有关每行源的信息。 _merge是分类类型,并且对于其合并键仅出现在“左”DataFrame中的观察值,取得值为left_only,对于其合并键仅出现在“右”DataFrame中的观察值为right_only,并且如果在两者中都找到观察点的合并键,则为left_only。

3.基础案例

3.1on关键字演示

on默认情况通过表格之间相同的列名作为匹配的键 Key,也可以通过赋予参数来指定列名作为键 Key。例如on=Key

Key可以是一个字符串,也可以是一个list。

下面两个 DataFrame df1 和 df2有相同的列名为'性别'和'年龄',默认这两列名组合成键 Key。df1 和 df2 对应键的交集是 '性别'’年龄'。从原理出发,可以设计出另一种拼接方法效果一致(pd.merge (df1, df2, how = ‘inner’, on=['性别',’年龄‘]))

运行代码:

import pandas as pddf1 = pd.DataFrame({'员工姓名':['张三','李红'],'性别':['男','女'],'年龄':['20','22'],'公司名称':['阿里巴巴有限公司','阿里巴巴有限公司']})df2 = pd.DataFrame({'员工姓名':['张三','李红'],'性别':['男','女'],'年龄':['20','22'],'工资':[10000,12000]})df = pd.merge(df1,df2)#df = pd.merge (df1, df2, how ='inner', on=['性别','年龄'])  #删除#即可运行print("df1:\n{}".format(df1)) print("df2:\n{}".format(df2)) print("df:\n{}".format(df))  

输出结果: 

df1:  员工姓名 性别  年龄      公司名称0   张三  男  20  阿里巴巴有限公司1   李红  女  22  阿里巴巴有限公司df2:  员工姓名 性别  年龄     工资0   张三  男  20  100001   李红  女  22  12000df:  员工姓名 性别  年龄      公司名称     工资0   张三  男  20  阿里巴巴有限公司  100001   李红  女  22  阿里巴巴有限公司  12000

但是如果指定'性别'列名为键 Key,结果又不一样了。在有相同的列名性别时,为了区分,默认会加上 _x 和 _y 后缀

相当于通过suffixes参数自定义后缀suffixes = ['_x','_y']

运行代码:

import pandas as pddf1 = pd.DataFrame({'员工姓名':['张三','李红'],'性别':['男','女'],'年龄':['20','22'],'公司名称':['阿里巴巴有限公司','阿里巴巴有限公司']})df2 = pd.DataFrame({'员工姓名':['张三','李红'],'性别':['男','女'],'年龄':['20','22'],'工资':[10000,12000]})df = pd.merge (df1, df2,on=['年龄'])# df = pd.merge (df1, df2,on=['年龄'],suffixes = ['_x','_y'])print("df1:\n{}".format(df1)) print("df2:\n{}".format(df2)) print("df:\n{}".format(df))  

输出结果:

df1:  员工姓名 性别  年龄      公司名称0   张三  男  20  阿里巴巴有限公司1   李红  女  22  阿里巴巴有限公司df2:  员工姓名 性别  年龄     工资0   张三  男  20  100001   李红  女  22  12000df:  员工姓名_x 性别_x  年龄      公司名称 员工姓名_y 性别_y     工资0     张三    男  20  阿里巴巴有限公司     张三    男  100001     李红    女  22  阿里巴巴有限公司     李红    女  12000

3.2left_on 和 right_on 关键字

这两个参数通常是使用在两个DataFrame的列名都不相同,但表达意思相同。如例子中的员工姓名姓名表达意思相同,就要用到 left_on='员工姓名' 和 right_on= '姓名'来指定匹配的列,还可以把多余的列删除掉。

 通过指定left_on='员工姓名' 和 right_on= '姓名',我们可以得到这样的列。

代码:

import pandas as pddf1 = pd.DataFrame({'姓名':['张三','李红'],'公司名称':['阿里巴巴有限公司','阿里巴巴有限公司']})df2 = pd.DataFrame({'员工姓名':['张三','李红'],'工资':[10000,12000]})#df = pd.merge (df1, df2,               left_on=['姓名'],               right_on = ['员工姓名'])#df#axis = 0 是行 axis = 1是列,drop为删除方法df = pd.merge (df1, df2,               left_on=['姓名'],               right_on = ['员工姓名']).drop('员工姓名',axis = 1)df

3.3left_index 和 right_index 关键字

这两个参数使用的场景通常是我们需要合并列并且合并index,通过设置left_index=True 和 right_index=True使得键与index进行配合。

代码:

df1 = pd.DataFrame({'姓名':['张三','李红'],                    '公司名称':['阿里巴巴有限公司','阿里巴巴有限公司']})df2 = pd.DataFrame({'员工姓名':['张三','李红'],                    '工资':[10000,12000]})df1 = df1.set_index('姓名')df2 = df2.set_index('员工姓名')#合并df = pd.merge (df1, df2,               left_index = True,               right_index = True)df

 还有混合 left/right_index 和right/left_on 关键字的用法,有兴趣的可以继续深入学习,本文不再介绍。

学习地址:Python 玩转数据 17 - Pandas 数据处理 合并 pd.merge() df1.merge(df2)_df.merge_wumingxiaoyao的博客-CSDN博客

3.4数据连接的类型

数据连接的类型:一对一连接,多对一连接,多对多连接,不同数据类型连接会有不同的差异。

3.4.1 一对一

代码:

import pandas as pddf1 = pd.DataFrame({'员工姓名':['张三','李红'],                    '公司名称':['阿里巴巴有限公司','阿里巴巴有限公司']})df2 = pd.DataFrame({'员工姓名':['张三','李红'],                    '工资':[10000,12000]})print(df1)print(df2) print(pd.merge(df1, df2))

结果:

  员工姓名      公司名称0   张三  阿里巴巴有限公司1   李红  阿里巴巴有限公司  员工姓名     工资0   张三  100001   李红  12000  员工姓名      公司名称     工资0   张三  阿里巴巴有限公司  100001   李红  阿里巴巴有限公司  12000

3.4.2 多对一

代码:

import pandas as pddf1 = pd.DataFrame({'编号':['001','002','003'],                    '学生姓名':['张三','李四','桃五']})print(df1)df2 = pd.DataFrame({'编号':['001','001','003'],                    '语文':[99,98,99],                    '数学':[115,118,120],                    '英语':[30,20,50],                    '月考月份':['1月','2月','1月']})print(df2)df_merge=pd.merge(df1,df2,on='编号')print(df_merge)

结果:

  编号 学生姓名0  001     张三1  002     李四2  003     桃五  编号  语文  数学  英语 时间0  001    99   115    30  1月1  001    98   118    20  2月2  003    99   120    50  1月  编号 学生姓名  语文  数学  英语 时间0  001     张三    99   115    30  1月1  001     张三    98   118    20  2月2  003     桃五    99   120    50  1月

3.4.3 多对多

代码:

import pandas as pddf1 = pd.DataFrame({'编号':['001','002','003','001','001'],                    '体育':[76,76,76,75,76]})print(df1)df2 = pd.DataFrame({'编号':['001','002','003','003','003'],                    '语文':[110,105,109,110,108],                    '数学':[105,88,120,123,119],                    '英语':[99,115,130,109,128]})print(df2)df_merge=pd.merge(df1,df2,on='编号')print(df_merge)

结果:

  编号  体育0  001    761  002    762  003    763  001    754  001    76  编号  语文  数学  英语0  001   110   105    991  002   105    88   1152  003   109   120   1303  003   110   123   1094  003   108   119   128  编号  体育  语文  数学  英语0  001    76   110   105    991  001    75   110   105    992  001    76   110   105    993  002    76   105    88   1154  003    76   109   120   1305  003    76   110   123   1096  003    76   108   119   128

多对多关系会将所有信息一一匹配出来。

总结:

(1)on关键字:通过设置匹配的键 Key来合并数据。

(2)left_on 和 right_on 关键字:不同DataFrame合并相同意义列时使用。

(3)left_index 和 right_index 关键字:合并列并且合并index。

来源地址:https://blog.csdn.net/m0_61635017/article/details/130158080

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

Python pd.merge()函数介绍(全)

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

下载Word文档

猜你喜欢

Python函数介绍:map函数的介绍及示例

Python函数介绍:map函数的介绍及示例在Python编程中,函数是一种非常重要的工具,可以用来封装一段可复用的代码。其中,map函数是一个强大且常用的函数,它可以对一个可迭代对象中的每一个元素应用一个指定的函数,然后返回一个新的可迭代
Python函数介绍:map函数的介绍及示例
2023-11-03

Python函数介绍:reversed函数的介绍及示例

Python函数介绍:reversed函数的介绍及示例在Python中,reversed()函数可以将一个序列类型的对象进行反转排列,返回一个包含了反转后元素的迭代器。在本文中,我们将介绍reversed()函数的具体用法,并提供一些代码示
Python函数介绍:reversed函数的介绍及示例
2023-11-04

Python函数介绍:enumerate函数的介绍及示例

Python函数介绍:enumerate函数的介绍及示例Python是一种高级编程语言,它提供了许多强大的函数,其中一个非常实用的函数是enumerate。这个函数可以帮助我们迭代序列,并返回元素的索引及其值。这篇文章将介绍enumerat
Python函数介绍:enumerate函数的介绍及示例
2023-11-03

Python函数介绍:ord函数的介绍及示例

Python函数介绍:ord函数的介绍及示例在Python编程中,ord()函数是一个很有用的函数,它用于返回给定字符的Unicode数值,即该字符在Unicode表中的位置。本篇文章将介绍ord()函数的用法、语法以及一些示例。一、ord
Python函数介绍:ord函数的介绍及示例
2023-11-04

Python函数介绍:input函数的介绍及示例

Python函数介绍:input函数的介绍及示例随着Python语言的快速发展,越来越多的人开始学习和使用Python进行编程。在Python中,函数是一种非常重要的概念,它可以帮助我们将一段代码逻辑封装起来,使得代码更加清晰和易于维护。其
Python函数介绍:input函数的介绍及示例
2023-11-04

Python函数介绍:delattr函数的介绍及示例

Python函数介绍:delattr函数的介绍及示例Python作为一门高级的编程语言,拥有丰富的内置函数库,提供了许多方便快捷的函数来进行各种操作。其中之一就是delattr函数。本文将详细介绍delattr函数的作用以及用法,并附上具体
Python函数介绍:delattr函数的介绍及示例
2023-11-03

Python函数介绍:zip函数的介绍及示例

Python函数介绍:zip函数的介绍及示例Python是一种高级语言,它提供了许多有用的函数来帮助开发人员快速地编写程序。其中一个函数就是zip函数。Zip函数是Python中的内置函数之一,它可以接受一组可迭代对象(包括列表、元组、集合
Python函数介绍:zip函数的介绍及示例
2023-11-03

Python函数介绍:range函数的介绍及示例

Python函数介绍:range函数的介绍及示例Python是一种广泛应用于各种领域的高级编程语言,它具有简单易学的特点,并且有着丰富的内置函数库。其中,range函数是Python中常用的一个内置函数之一。本文将详细介绍range函数的功
Python函数介绍:range函数的介绍及示例
2023-11-04

Python函数介绍:int函数的介绍及示例

Python函数介绍:int函数的介绍及示例Python是一种强大的编程语言,其广泛用于数据分析、人工智能、web开发等领域。Python拥有众多内置函数,此篇文章将对Python中的一个常用函数——int进行介绍,并提供具体示例。一、in
Python函数介绍:int函数的介绍及示例
2023-11-04

Python函数介绍:hasattr函数的介绍及示例

Python函数介绍:hasattr函数的介绍及示例在Python中,hasattr()是一个内置函数。它的主要功能是检查一个对象是否有指定的属性或方法,并返回一个布尔值来指示是否存在。这个函数的使用方法非常简单,仅需要提供两个参数:一个对
Python函数介绍:hasattr函数的介绍及示例
2023-11-03

Python函数介绍:max函数的介绍及示例

Python函数介绍:max函数的介绍及示例函数在Python编程中是非常重要的概念。Python内置了许多有用的函数,其中一个是max函数。本文将介绍max函数的用法以及示例代码,帮助读者更好地理解和运用。max函数的作用是返回给定参数的
Python函数介绍:max函数的介绍及示例
2023-11-03

Python函数介绍:str函数的介绍及示例

Python函数介绍:str函数的介绍及示例Python是一种简单易学的编程语言,拥有丰富的内置函数来帮助开发者处理数据。其中一个常用的内置函数是str函数。str函数主要用于将其他数据类型转换为字符串类型。str函数的用法如下:str(o
Python函数介绍:str函数的介绍及示例
2023-11-03

Python函数介绍:format函数的介绍及示例

Python函数介绍:format函数的介绍及示例在Python中,format()函数是一个非常重要且常用的函数,它用于对字符串进行格式化处理。通过format()函数,我们可以将一些变量、数据和文字按照一定的格式拼接在一起,并输出成我们
Python函数介绍:format函数的介绍及示例
2023-11-03

Python函数介绍:exec函数的介绍及示例

Python函数介绍:exec函数的介绍及示例引言:在Python中,exec是一种内置函数,它用于执行存储在字符串或文件中的Python代码。exec函数提供了一种动态执行代码的方式,使得程序可以在运行时根据需要生成、修改和执行代码。本文
Python函数介绍:exec函数的介绍及示例
2023-11-03

Python函数介绍:slice函数的介绍及示例

Python函数介绍:slice函数的介绍及示例Python是一种简单易学、功能强大的高级编程语言,拥有丰富的内置函数和标准库。其中,slice函数是Python中非常实用的一个函数,用于创建一个切片对象,用来切割序列(包括字符串、列表等)
Python函数介绍:slice函数的介绍及示例
2023-11-03

Python函数介绍:bin函数的介绍及示例

Python函数介绍:bin函数的介绍及示例Python是一种强大而灵活的编程语言,它提供了许多内置函数,其中之一就是bin()函数。bin()函数用于将整数转换为二进制字符串。在本文中,将介绍bin()函数的详细用法,并提供一些实际示例。
Python函数介绍:bin函数的介绍及示例
2023-11-04

Python函数介绍:tuple函数的介绍及示例

Python函数介绍:tuple函数的介绍及示例在Python编程语言中,tuple(元组)是一种不可变的有序数据类型。它类似于列表,但与列表不同的是,元组一旦创建后就无法修改。元组可以包含不同类型的数据,并以小括号()来表示。tuple函
Python函数介绍:tuple函数的介绍及示例
2023-11-04

Python lambda函数介绍

一、lambda函数也叫匿名函数,即,函数没有具体的名称。先来看一个最简单例子:def f(x):return x**2print f(4)Python中使用lambda的话,写成这样g = lambda x : x**2print g(4
2023-01-30

编程热搜

  • Python 学习之路 - Python
    一、安装Python34Windows在Python官网(https://www.python.org/downloads/)下载安装包并安装。Python的默认安装路径是:C:\Python34配置环境变量:【右键计算机】--》【属性】-
    Python 学习之路 - Python
  • chatgpt的中文全称是什么
    chatgpt的中文全称是生成型预训练变换模型。ChatGPT是什么ChatGPT是美国人工智能研究实验室OpenAI开发的一种全新聊天机器人模型,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,并协助人类完成一系列
    chatgpt的中文全称是什么
  • C/C++中extern函数使用详解
  • C/C++可变参数的使用
    可变参数的使用方法远远不止以下几种,不过在C,C++中使用可变参数时要小心,在使用printf()等函数时传入的参数个数一定不能比前面的格式化字符串中的’%’符号个数少,否则会产生访问越界,运气不好的话还会导致程序崩溃
    C/C++可变参数的使用
  • css样式文件该放在哪里
  • php中数组下标必须是连续的吗
  • Python 3 教程
    Python 3 教程 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。 Python
    Python 3 教程
  • Python pip包管理
    一、前言    在Python中, 安装第三方模块是通过 setuptools 这个工具完成的。 Python有两个封装了 setuptools的包管理工具: easy_install  和  pip , 目前官方推荐使用 pip。    
    Python pip包管理
  • ubuntu如何重新编译内核
  • 改善Java代码之慎用java动态编译

目录