Python pandas数据合并merge函数用法详解

 更新时间:2023年07月26日 09:35:53   作者:只有你最牛  
这篇文章主要给大家介绍了关于Python pandas数据合并merge函数用法的相关资料,数据分析中经常会遇到数据合并的基本问题,文中通过示例代码介绍的非常详细,需要的朋友可以参考下

一、语法格式

介绍一下数据分析中很常用的一个函数——merge,它能够进行高效的数据合并操作。先看一下语法格式及其初步解释:

pd.merge(left: 'DataFrame | Series',  # 左右两个需要合并的DataFrame对象。  
         right: 'DataFrame | Series',
         how: 'str' = 'inner',  # 要执行的合并类型,从{'left','right','outer','inner','cross'}中取值,默认为'inner'。
         on: 'IndexLabel | None' = None,  # 用于连接的键(即列标签名),该键必须存在于左右两个DataFrame中。若没有指定,则以列名的交集作为连接键。
         left_on: 'IndexLabel | None' = None, 
         right_on: 'IndexLabel | None' = None,  # 指定左右DataFrame对象中作为连接键的列名。适用于左右拟连接列名称有差异时。
         left_index: 'bool' = False,
         right_index: 'bool' = False,  # 和上,将左右frame的索引作为连接键,进行数据合并。
         sort: 'bool' = False,  # DataFrame对象结果中,按词典顺序排序,默认False。
         suffixes: 'Suffixes' = ('_x', '_y'),  # 当左右DataFrame存在相同列名时,通过该参数为其添加后缀。
         copy: 'bool' = True,
         indicator: 'bool' = False,  # 输出结果中添加_merge列,表明每一行使用的左右键来源情况。
         validate: 'str | None' = None  # 验证连接键在左侧、右侧或两侧是否唯一,即'1:1','1:m','m:1'。
        )

二、举例解释

(一)首先生成两个DataFrame对象,以供我们案例使用:

dep_inf = {'部门':['业务一部','业务二部','业务三部','办公室'],
           '城市': ['深圳','上海','北京','广州'],
           '部门名称':['业务一部','业务二部','业务三部','办公室']}
emp_inf = {'姓名':['张飞','赵云','金莲','关习','和珅','宋江'],
           '学历':['本科','硕士','本科','本科','博士','硕士'],
           '部门':['业务一部','业务一部','业务二部','业务三部','业务三部','业务四部'],
           '城市':['北京','深圳','广州','上海','深圳','深圳']}
df_d = pd.DataFrame(dep_inf)
df_e = pd.DataFrame(emp_inf)

生成的两个DataFrame对象如下:

(二)下面举个栗子,介绍一下主要参数

1、参数left,right:

将df_d作为左侧的frame,df_e作为右侧的frame,则参数left=df_d,right=df_e;

2、参数how:

当参数how='left':仅使用左侧frame的键;当参数how='right':仅使用右侧frame的键;当参数how='outer':使用左右两侧frame的键的并集;当参数how='inner':使用左右两侧frame的键的交集;

3、参数on:

df_d,df_e中都有“部门”列(键),则使用“部门”作为连接键,即参数on='部门'。

下面就以“部门”作为连接键,顺便看一下参数how的效果。

pd.merge(df_d, df_e, how='left',on='部门',indicator=True)
pd.merge(df_d, df_e, how='right',on='部门',indicator=True)
pd.merge(df_d, df_e, how='inner',on='部门',indicator=True)
pd.merge(df_d, df_e, how='outer',on='部门',indicator=True)

4、参数indicator:

在输出结果中添加_merge列,表明每一行使用的左右键来源情况,如上图所示。

同时,可以看一下merge参数的结果_merge列加深对参数how的理解。

5、参数left_on,right_on:

这两个参数其实和参数'on'是同一性质,当左右两个frame的连接键的名字相同时,可以直接用参数‘on’。但是如果像本例中,左侧frame键名为“部门名称”(假设左侧frame中没有“部门这一列”),右侧frame键名为“部门”,但是其内容实质相同。此时就用left_on和right_on参数以替代参数on。

6、参数suffixes:

该参数默认suffixes = ('_x', '_y'),所以命令中未写。

当左右frame存在相同列名时,通过该参数为其添加后缀。因为左侧frame和右侧frame均有城市、部门列,因此为了防止相同列互相覆盖,给左右两侧的列加了后缀_x和_y以保留数据。当然这个_x和_y是默认后缀,你也可以根据需要修改为其他形式。

其他参数请参照本文第一部分:语法格式中的解释。

总结

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

相关文章

  • Python音频处理库pydub的使用示例详解

    Python音频处理库pydub的使用示例详解

    pydub是一个轻量级的音频处理库,安装方便,使用简单,这篇文章主要为大家详细介绍了pydub的具体使用,文中的示例代码讲解详细,需要的小伙伴可以参考下
    2023-11-11
  • Python处理日期和时间的方法总结

    Python处理日期和时间的方法总结

    这篇文章主要介绍了Python时间和日期的处理方法总结,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2022-03-03
  • pytorch torch.expand和torch.repeat的区别详解

    pytorch torch.expand和torch.repeat的区别详解

    这篇文章主要介绍了pytorch torch.expand和torch.repeat的区别详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-11-11
  • 深入理解python对json的操作总结

    深入理解python对json的操作总结

    Json最广泛的应用是作为AJAX中web服务器和客户端的通讯的数据格式,本篇文章主要介绍了python对json的操作总结,具有一定的参考价值,有兴趣的可以了解一下。
    2017-01-01
  • python命令行工具Click快速掌握

    python命令行工具Click快速掌握

    这篇文章主要介绍了python命令行工具Click快速掌握,写 Python 的经常要写一些命令行工具,虽然标准库提供有命令行解析工具 Argparse,但是写起来非常麻烦,我很少会使用它。命令行工具中用起来最爽的就是 Click,,需要的朋友可以参考下
    2019-07-07
  • Python中处理字符串之endswith()方法的使用简介

    Python中处理字符串之endswith()方法的使用简介

    这篇文章主要介绍了Python中处理字符串之endswith()方法的使用,是Python入门中的基础知识,需要的朋友可以参考下
    2015-05-05
  • Python异常类型以及处理方法汇总

    Python异常类型以及处理方法汇总

    调试Python程序时,经常会报出一些异常,下面这篇文章主要给大家介绍了关于Python异常类型以及处理方法的相关资料,需要的朋友可以参考下
    2021-06-06
  • 使用python pywin32模块创建windows服务实例探究

    使用python pywin32模块创建windows服务实例探究

    这篇文章主要为大家介绍了使用python pywin32模块创建windows服务实现实例探究,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2024-01-01
  • Python编程在flask中模拟进行Restful的CRUD操作

    Python编程在flask中模拟进行Restful的CRUD操作

    今天小编就为大家分享一篇关于Python编程在flask中模拟进行Restful的CRUD操作,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧
    2018-12-12
  • python 打印完整异常问题

    python 打印完整异常问题

    这篇文章主要介绍了python 打印完整异常问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-11-11

最新评论