解决一个问题:关联AB两张表,以特定列作为关联基准,将B表中的数据关联进A表中
问题描述
表一:
表二:
可以看到两张表都存在可作为
关联基准列的
姓名,想要把表2中
爱好、
年龄列从表1中根据
姓名列匹配出来
解决方法一:Excel函数Vlookup
插入函数:VLOOKUP(参数1,参数2,参数3,参数4)
VLOOKUP函数有4个参数,具体含义如下:
参数1:目标表的关联列(本文示例中sheet2中 A列为关联列)
参数2:根据关联表的哪个区域匹配 (本文示例中sheet1 中 A2:B10 为关联区域)
参数3:需要匹配查找区域的第几列。(本文示例中年龄列为匹配区域的第二列)
参数4:查找模式,即是要精确查找还是要模糊查找,精确查找:False或0,模糊查找:True或1 (本文示例使用精确查找,0)
我这里使用WPS,公式-查找与引用-VLOOKUP
在对应区域使用VLOOKUP函数
批量匹配的时候只需要选中当前列的区域,然后把公式复制即可,表格会自动递增更新参数1的值
另外,用
IFERROR函数可以控制匹配返回值
=IFERROR(VLOOKUP(B1,sheet1!$A:$C,3,0),"")
判断VLOOKUP执行后,如果匹配到值则正常返回,如果没匹配到,则返回空(即公式的"")
解决方法二:Python函数Pandas
表一:
表二:
最后效果:
其中Sheet2数据比Sheet1数据多一条,我们要实现的目标是把Sheet1中人员对应的年龄放到Sheet2对应的人员上,如果人员在Sheet1中不存在,则不用处理。
使用
Pandas函数实现
#!/usr/bin/env python3
# _*_ coding: utf-8 _*_
import pandas as pd
df1 = pd.read_excel("/Users/daren/Downloads/1.xlsx", sheet_name=0)
df2 = pd.read_excel("/Users/daren/Downloads/1.xlsx", sheet_name=1)
c = df1.merge(df2, on="Name", how="right")
# c=pd.merge(a,b,how='right')
# print(c.head())
c.to_excel('3.xlsx', sheet_name='result')
代码解释:
- 第5行:引入
pandas library - 第7-8行:使用
pandas.read_excel方法导入excel表格的两个Sheet页面,作为dataframe对象。 - 第10行:执行
merge操作,也就是实现VLookup函数的地方。
基于共有的“Name”列merge df1和df2,生成一个新的dataframe,然后生成excel。c = df1.merge(df2, on=”Name”, how=”left”)
其中df1作为left dataframe,df2作为right dataframe。
how有4中选择生成新的dataframe:
- left,以左侧表格共享列为基准
- right,以右侧表格共享列为基准
- inner,以两侧共有表格共享列为基准(取交集)
- outer,取两侧表格共享列最大区间为基准(取并集)
参考https://www.cnblogs.com/yaoze2018/p/12578352.htmlhttp://jianlei.github.io/archives/651663e0.html
本文介绍如何使用Excel的VLOOKUP函数和Python的Pandas库进行数据表关联,通过姓名列将不同表中的数据匹配整合,适用于数据处理和分析场景。
1507

被折叠的 条评论
为什么被折叠?



