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是默认后缀,你也可以根据需要修改为其他形式。
其他参数请参照本文第一部分:语法格式中的解释。
