又发现了pandas包里面的一个好用的函数——merge函数!!!!!!!
【描述】
merge函数类似于mysql等数据库语言中的join函数,可以实现对两个DataFrame的条件合并。
【准备】
import pandas as pd
import numpy as np
【语法】
(1)当两个DataFrame的关联列名称相同时:
merge(DataFrame_A,DataFrame_B,on = [],how = [],...)
DataFrame_A和DataFrame_B就是要合并的两个DataFrame,on代表以哪个key作为合并条件,当然可以取多个关联列,此时 可以以list的形式为on赋值(例如 on = [student_id,student_name]时,那么两个表中相同student_id和student_name的数据就会合并成一行哈,不严谨,但是可以这么理解~~),how代表那种连接方式(可选择left,right,outer,默认为inner),当然还有其他参数,但这三个是最关键的!
(2)当两个DataFrame的关联列名称不同时:
merge(DataFrame_A,DataFrame_B,left_on = [],right_on = [] ,how = [],...)
区别在于on被分开为left_on和right_on,用来标识两个DataFrame的关联列。其他不变
(3)当两个DataFrame的非关联列存在名称重复时:
可以在merge函数中添加参数:suffixes = ('_left','_right') 来区别标识(注:'_left','_right'属于个人设置,可以更改)
【举例】
创建测试数据集:
data_1 = pd.DataFrame({'id':[1,2,3],'b':['张三','李四','王五'],'d':['male','male','female']})
data_2 = pd.DataFrame({'student_id':[1,1,2,2,3,3],'b':['一班','一班','二班','二班','三班','三班'],'c':['上','下','上','下','上','下'],'math':[99,100,99,98,99,100]})
使用merge函数合并上述两个数据框:
data=pd.merge(data_1,data_2,left_on = 'id',right_on = 'student_id',how = 'left',suffixes = ('_left','_right') )
data