python实现excel的vlookup功能
pd.merge(left,right,how=“inner”,on=None,left_on=None,right_on=None,left_index=False,right_index=False,sort=True,suffixes=(“_x”,“_y”),copy=True,indicator=False)
参数 | 说明 |
---|---|
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 | 显示合并数据中数据来自哪个表 |
left_on和right_on 主要用于两个表列名不一样的情况,连接列相同直接用on。
how连接方式:与sql 的 join on类似, inner 取交集 ,保留两表的交集。outer 并集 ,保留两表未匹配数据 填充空值 。left和right为左连接后右连接 ,保留主表, 填充空值。
例:
调用pandas生成df1和df2
import pandas as pd
df1 = pd.DataFrame({
'A': ['A0', 'A1', 'A2', 'A3'],
'B': ['B0', 'B1', 'B2', 'B3'],
'key': ['K0', 'K1', 'K2', 'K3'] })
df2 = pd.DataFrame({
'C': ['C0', 'C1'],
'D': ['D0', 'D1'],
'key' : ['K0', 'K4'],
'key1':['k0','k3'] })
左连接:左表保留,填充右表与坐表key匹配的项,不匹配的填充空值
df=pd.merge(df1,df2,how='left',on='key')
df
右连接:和左连接相似,主表变成右表
df=pd.merge(df1,df2,how='right',on='key')
df
外连接:两表合并所有key,未匹配填充为空值。
df=pd.merge(df1,df2,how='outer',on='key')
df
内连接:取两表的交集
df=pd.merge(df1,df2,how='inner',on='key')
df
连接项的名称不一样:左右表的名称单独列出,left_on,right_on
df3 = pd.DataFrame({
'C': ['C0', 'C1'],
'D': ['D0', 'D1'],
'key1':['K0','K3'] }
)
df3
df=pd.merge(df1,df3,how='left',left_on='key',right_on='key1')
df