前言:
如今朋友们对“python中vlookup”大体比较关切,小伙伴们都需要剖析一些“python中vlookup”的相关知识。那么小编也在网摘上搜集了一些有关“python中vlookup””的相关文章,希望我们能喜欢,各位老铁们快快来了解一下吧!Vlookup本质上用于垂直排列的数据。Vlookup是一个用来合并两个不同的数据表的操作,基于一些条件,两个表之间必须有至少一个共同的属性(列)。执行这个操作后,我们得到一个由两个表的所有数据组成的表,这些数据是匹配的。
但如何使用python脚本实现Vlookup呢,下面我们用一些实例讲解用法:
首先介绍Pandas Merge函数:
merge是用来拼接两张表的,那么拼接时自然就需要将用户信息一一对应地进行拼接,所以进行拼接的两张表需要有一个共同的识别用户的键(key)。总结来说,整个merge的过程就是将信息一一对应匹配的过程,
merge参数:
参数
说明
left
左表
right
右表
how
连接方式,inner、left、right、outer,默认为inner
on
用于连接的列名称
left_on
左表用于连接的列名
right_on
右表用于连接的列名
left_index
是否使用左表的行索引作为连接键,默认False
right_index
是否使用右表的行索引作为连接键,默认False
sort
默认为False,将合并的数据进行排序
copy
默认为True,总是将数据复制到数据结构中,设置为False可以提高性能
suffixes
存在相同列名时在列名后面添加的后缀,默认为(’_x’, ‘_y’)
indicator
显示合并数据中数据来自哪个表
一、inner
merge的'inner'的类型称为内连接,它在拼接的过程中会取两张表的键(key)的交集进行拼接。我们有以下的数据,主表有 "i" "j" "year" 等列,及GPD等其它若干子表
读取主表
data=pd.read_excel("变量a.xlsx",sheet_name="面板数据")data
读取子表1
data1=pd.read_excel("变量a.xlsx",sheet_name="dvaijt jit")data1.columns=["i","j","year","dvaijt_new"]data1
由图可见两张表数据都是81510行,现在使用“inner”根据主表和子表1中相同的【"i" ,"j" ,"year" 】列建立连接,取子表中【"dvaijt_new"】列的数据放入主表
inner_join = pd.merge(data, data1, on =["i","j","year"], how ='inner')
结果
二、left 和right
left'和'right'的merge方式其实是类似的,分别被称为左连接和右连接。这两种方法是可以互相转换的,所以在这里放在一起介绍。
'left'
merge时,以左边表格的键为基准进行配对,如果左边表格中的键在右边不存在,则用缺失值NaN填充。
'right'
merge时,以右边表格的键为基准进行配对,如果右边表格中的键在左边不存在,则用缺失值NaN填充。
现在主表还用刚才的data,子表使用数据比主表数据多的"tijt"
data5=pd.read_excel("变量a.xlsx",sheet_name="tijt")data5.columns=["i","j","year","tijt"]data5
由图可见主表数据都是81510行,子表数据1014156行,我们继续使用merge函数left参数以主表数据为准取子表的“tijt"列数据到主表中
inner_join_TIJ= pd.merge(inner_join_F, data5, on =["i","j","year"], how ='left',)inner_join_TIJ["tij"]=inner_join_TIJ["tijt"]inner_join_TIJ
结果
由结果可见数据还是81510行,但会出现缺失值,如果我们还使用inner参数,结果是两个表数据的总和,使用right参数,结果是以子表数据为准,这里我就不一一举例,感兴趣的同学可私信我把数据给你练习。
以上基本了解merge的整个过程,总结来说merge的不同类型区别就在于拼接时,选用的是两表的键的集合不同。关于Pandas的merge就介绍到这里,欢迎同学们批评指正,点赞转发,谢谢支持!
标签: #python中vlookup