求助!pandas怎么实现vlookup功能,数据放在指定列里
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了求助!pandas怎么实现vlookup功能,数据放在指定列里相关的知识,希望对你有一定的参考价值。
有一个名叫“测试.xlsx”的excel,有两个sheet,我想把sheet2里‘成绩’那列的数据匹配到sheet1里‘分数’那列,请问代码怎么写?我自己写了点,但是功能没有完全实现,只实现了两个表格合并,代码如下,请大神帮忙修改下。import pandas as pd
df1=pd.read_excel('测试.xlsx',sheet_name='Sheet1')
df2=pd.read_excel('测试.xlsx',sheet_name='Sheet2')
df=pd.merge(df1,df2,how='left',left_on=['名字'],right_on=['姓名'])
print(df.values)
df.to_excel('结果.xlsx',index=False)
你写错了,我看你这个要求的结果 ,你应该使用#left join 方法
你这个是 MySQL吗,你打代码里也没有left join这个函数啊,你那个left_join是个变量吧,我是想用pandas实现VLOOKUP,数据库还不会,能帮我写下pandas的代码吗
追答这就是 Python 语言,pandas 框架,看着图片打代码,然后把2个 Excel 文件放在 python 脚本目录中执行就可以了。
追问你这个功能我已经实现了,看我发的第三个图片,我要求的是输出的表格保持sheet1(第二张图片)的格式不变(不增加行也不增加列),把“成绩”那列数据放到“分数”那列里,就是excel中用的vlookup
Python 也可以实现 Excel 中的 “Vlookup” 函数?
作者 | 朱小五
来源 | 快学Python
VLOOKUP
函数大家应该都很熟悉吧,它可以帮我们根据指定的条件快速查找匹配出相应的结果,通常被用于核对、匹配多个表格之间的数据。与数据透视表,并称为数据er最常用的两大Excel功能。

那我们今天就聊聊,如何Python写Excel中的“Vlookup”函数?
Excel
如图所示,在“测试工资数据.xlsx”表格文件中有两个sheet,其中sheet1是我们的数据源区域,而sheet2存储的是待查找的员工姓名和工资。

在sheet2中,一列是员工姓名,一列是他们的对应工资。

vlookup函数就是在表格或数值数组的首列查找指定的数值,并由此返回表格或数组当前行中指定列处的数值。语法格式如下所示:
VLOOKUP (lookup_value, table_array, col_index_num, [range_lookup])
一般是匹配条件容易记混,如果为FALSE或0,则返回精确匹配,如果找不到,则返回错误值 #N/A
。如果 range_lookup 为TRUE或1,函数 VLOOKUP 将查找近似匹配值。
openpyxl
在Python中利用openpyxl库,就可以完成公式的填充。因此在使用openpyxl之前,需要安装好这个库。
pip install openpyxl
在openpyxl中,读取已有的Excel文件,使用到的是load_workbook类
,因此需要提前导入这个类。接着,实例化load_workbook("测试工资数据.xlsx")
对象,得到一个工作簿对象。
然后,使用workbook["Sheet2"]
激活该工作簿中的Sheet2表,表示我们要针对这个表进行操作。完成上述操作后,下面就可以进行vlookup公式的填写了。
from openpyxl import load_workbook
workbook = load_workbook("测试工资数据.xlsx")
sheet = workbook["Sheet2"]
sheet["B1"] = "基本工资(Python)"
for i in range(2, sheet.max_row+1):
sheet[f"Bi"] = f'=VLOOKUP(Ai,Sheet1!A:B,2,FALSE)'
workbook.save(filename = "vlookup.xlsx")
首先,我们利用sheet["B1"] = "基本工资(Python)"
修改B1单元格位置的表头。然后通过for循环语句,循环第2行到最后一行,针对每一个B列单元格,我们都写入上述vlookup公式。
最后记得保存一下即可。
不过需要注意,Python操作Excel的优势在于处理大数据、或者重复性工作。在本次案例中,使用openpyxl库向Excel中写入Vlookup函数多少有点大材小用了。
经过openpyxl一番操作,如同庄周带净化。
Pandas
在这数据爆炸的时代,我们无时无刻不在和数据打交道。面对杂乱无章的数据Pandas 模块应运而生了,它提供了数据导入、数据清洗、数据处理、数据导出等一套流程方法,可以很方便地帮助我们自动整理数据[2]。
那么Excel中的这种常用函数,Pandas模块自然也是可以轻松搞定了。
在 Pandas 模块中,调用merge()
方法,可以帮助我们实现数据连接。
在交互式环境中输入如下命令:
import pandas as pd
path = "测试工资数据.xlsx"
df_1 = pd.read_excel(path, sheet_name = 'Sheet1')
df_2 = pd.read_excel(path, sheet_name = 'Sheet2')
pd.merge(df_2["姓名"], df_1[["姓名", "基本工资"]], how="left", on="姓名")
这样我们就用Python(openpyxl
+ Pandas
)实现了Excel中的“Vlookup”函数。
往期回顾
分享
点收藏
点点赞
点在看
以上是关于求助!pandas怎么实现vlookup功能,数据放在指定列里的主要内容,如果未能解决你的问题,请参考以下文章
在 Python (pandas) 的多个列中进行 Vlookup
在 python 中使用 pandas 进行 vlookup