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

一、语法格式

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

二、举例解释

(一)首先生成两个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列加深对参数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是默认后缀,你也可以根据需要修改为其他形式。

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

经验分享 程序员 微信小程序 职场和发展