文章详情

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

请输入下面的图形验证码

提交验证

短信预约提醒成功

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

2023-09-14 20:40

关注

介绍一下数据分析中很常用的一个函数——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是默认后缀,你也可以根据需要修改为其他形式。

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

<原创内容,引用请注明出处>

来源地址:https://blog.csdn.net/m0_56102834/article/details/127971429

阅读原文内容投诉

免责声明:

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

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

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯