Pandas数据集的合并与连接merge()方法

 更新时间:2023年11月22日 10:04:17   作者:阿松爱睡觉  
Pandas数据集的合并与连接(merge())是数据处理过程中常用的操作之一,在使用Pandas进行数据集合并时,可以使用merge()函数将两个或多个数据集按照指定的列进行合并,本文就来介绍一下,感兴趣的可以了解一下

merge()解析

merge()可根据一个或者多个键将不同的DataFrame连接在一起,类似于SQL数据库中的合并操作。

在这里插入图片描述

数据连接的类型

  • 一对一的连接:
df1 = pd.DataFrame({'employee': ['Bob', 'Jake', 'Lisa', 'Sue'], 'group': ['Accounting', 'Engineering', 'Engineering', 'HR']})
df2 = pd.DataFrame({'employee': ['Lisa', 'Bob', 'Jake', 'Sue'], 'hire_date': [2004, 2008, 2012, 2014]})
df3 = pd.merge(df1,df2)
df3

输出:

在这里插入图片描述

df3

在这里插入图片描述

  • 多对一的连接:
df4 = pd.DataFrame({'group': ['Accounting', 'Engineering', 'HR'], 'supervisor': ['Carly', 'Guido', 'Steve']})
pd.merge(df3,df4) 

输出:

在这里插入图片描述

  • 多对多连接:
df5 = pd.DataFrame({'group': ['Accounting', 'Accounting', 'Engineering', 'Engineering', 'HR', 'HR'], 'skills': ['math', 'spreadsheets', 'coding', 'linux', 'spreadsheets', 'organization']})
pd.merge(df1,df5)

输出:

在这里插入图片描述

merge()的主要参数

1. on 可以是列名字符串或者一个包含多列名称的列表;

pd.merge(df1, df2, on='employee')

输出:

在这里插入图片描述

这个参数只能在两个DataFrame有共同列名的时候才可以使用。

2. left_onright_on参数

有时你也需要合并两个列名不同的数据集,例如前面的员工信息表中有一个字段不是employee而是name。在这种情况下,就可以用left_on和right_on参数来指定列名。

df3 = pd.DataFrame({'name': ['Bob', 'Jake', 'Lisa', 'Sue'], 'salary': [70000, 80000, 120000, 90000]})
dfx = pd.merge(df1,df3,left_on="employee",right_on="name")

输出:

在这里插入图片描述

在这里插入图片描述

drop()删除
如果出现重复列,但是列名不同时,可以使用drop方法将这列去掉;

dfx.drop("name",axis=1)

输出:

在这里插入图片描述

3. left_index与right_index参数 用于合并索引

df1a = df1.set_index('employee')
df2a = df2.set_index('employee')
pd.merge(df1a,df2a,left_index=True,right_index=True)

输出:

在这里插入图片描述

join()方法也可以实现该功能:

df1a.join(df2a)

输出:

在这里插入图片描述

如果想将索引与列混合使用,那么可以通过结合left_index与 right_on,或者结合left_on与right_index来实现。

pd.merge(df1a, df3, left_index=True, right_on='name')

输出:

在这里插入图片描述

4. how参数

how参数默认情况下是inner,也就是取交集。how参数支持的数据连接方式还有outerleftrightouter表示外连接,取并集。

df6 = pd.DataFrame({'name': ['Peter', 'Paul', 'Mary'], 'food': ['fish', 'beans', 'bread']}, columns=['name', 'food']) 
df7 = pd.DataFrame({'name': ['Mary', 'Joseph'], 'drink': ['wine', 'beer']}, columns=['name', 'drink'])
pd.merge(df6, df7, how='outer') 

输出:

在这里插入图片描述

左连接和右连接返回的结果分别只包含左列和右列;

pd.merge(df6, df7, how='left')

输出:

在这里插入图片描述

5. suffixes参数

如果输出结果中有两个重复的列名,因此pd.merge()函数会自动为它们增加后缀 _x 或 _y,当然也可以通过suffixes参数自定义后缀名。

df8 = pd.DataFrame({'name': ['Bob', 'Jake', 'Lisa', 'Sue'], 'rank': [1, 2, 3, 4]}) 
df9 = pd.DataFrame({'name': ['Bob', 'Jake', 'Lisa', 'Sue'], 'rank': [3, 1, 4, 2]})
pd.merge(df8, df9, on="name", suffixes=["_L", "_R"])

输出:

在这里插入图片描述

suffixes参数同样适用于任何连接方式,即使有三个及三个以上的重复列名时也同样适用。

到此这篇关于Pandas数据集的合并与连接merge()方法的文章就介绍到这了,更多相关Pandas数据集的合并与连接内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Numpy中np.newaxis的作用和用法小结

    Numpy中np.newaxis的作用和用法小结

    np.newaxis常常用于将一个一维数组转化为二维数组,本文就来介绍一下Numpy中np.newaxis的作用和用法小结,具有一定的参考价值,感兴趣的可以了解一下
    2024-03-03
  • 利用OpenCV中对图像数据进行64F和8U转换的方式

    利用OpenCV中对图像数据进行64F和8U转换的方式

    这篇文章主要介绍了利用OpenCV中对图像数据进行64F和8U转换的方式,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-06-06
  • Python实现的删除重复文件或图片功能示例【去重】

    Python实现的删除重复文件或图片功能示例【去重】

    这篇文章主要介绍了Python实现的删除重复文件或图片功能,结合实例形式分析了Python基于os与hashlib模块针对文件的读取、hash计算及重复性判定等相关操作技巧,需要的朋友可以参考下
    2019-04-04
  • python 比较字典value的最大值的几种方法

    python 比较字典value的最大值的几种方法

    这篇文章主要介绍了python 比较字典value的最大值,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-04-04
  • Python使用PyYAML库进行配置文件管理

    Python使用PyYAML库进行配置文件管理

    在现代软件开发中,配置文件管理已经成为了一个不可或缺的环节,本文主要为大家详细介绍了如何使用Python中的PyYAML库来操作YAML文件,以及YAML文件的一些优缺点,希望对大家有所帮助
    2023-12-12
  • python实现对图片进行旋转,放缩,裁剪的功能

    python实现对图片进行旋转,放缩,裁剪的功能

    今天小编就为大家分享一篇python实现对图片进行旋转,放缩,裁剪的功能,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2019-08-08
  • 一文教会你使用Python批量缩放图片

    一文教会你使用Python批量缩放图片

    最近处理一些规格不一的照片,需要修改成指定尺寸便于打印,下面这篇文章主要给大家介绍了关于使用Python批量缩放图片的相关资料,文中通过示例代码介绍的非常详细,需要的朋友可以参考下
    2022-02-02
  • python获取时间及时间格式转换问题实例代码详解

    python获取时间及时间格式转换问题实例代码详解

    这篇文章主要介绍了python获取时间及时间格式转换,需要的朋友可以参考下
    2018-12-12
  • python实现文件+参数发送request的实例代码

    python实现文件+参数发送request的实例代码

    这篇文章主要介绍了python实现文件+参数发送request的实例代码,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2021-01-01
  • jupyter .ipynb转.py的实现操作

    jupyter .ipynb转.py的实现操作

    这篇文章主要介绍了jupyter .ipynb转.py的实现操作,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2021-03-03

最新评论