用Python实现Excel中的Vlookup功能

目录

一、引言

二、准备工作

三、实现Vlookup功能

1、导入pandas库

2、准备数据

3、实现Vlookup功能

4、处理结果

5、保存结果

四、完整代码示例

五、注意事项

六、总结


一、引言

在Excel中,Vlookup是一个非常实用的函数,它可以帮助我们在表格中查找并返回所需的值。如果你想在Python中实现类似的功能,可以使用pandas库来实现。Pandas库是一个强大的数据处理工具,可以轻松处理和分析各种数据。下面,我们将手把手教你如何使用Python和pandas库实现Excel中的Vlookup功能。

二、准备工作

首先,确保你已经安装了pandas库。如果没有安装,可以使用以下命令进行安装:
pip install pandas

三、实现Vlookup功能

1、导入pandas库

在Python脚本中,首先需要导入pandas库:

python
import pandas as pd

2、准备数据

假设我们有两个表格,一个是"main_data.csv",包含我们要查找的列和返回的列,另一个是"lookup_table.csv",包含查找值和对应的结果。我们将分别读取这两个表格:

python
# 读取main_data.csv表格  
main_data = pd.read_csv('main_data.csv')  
  
# 读取lookup_table.csv表格  
lookup_table = pd.read_csv('lookup_table.csv')

3、实现Vlookup功能

接下来,我们将使用pandas的merge()函数来合并两个表格。merge()函数可以根据指定的列将两个表格进行匹配,并返回匹配的结果。我们将使用left_on和right_on参数来指定用于匹配的列:

python
# 根据指定的列进行合并,并将结果存储在new_data变量中  
new_data = main_data.merge(lookup_table, left_on='查找列', right_on='查找值列')

4、处理结果

merge()函数将返回一个新的DataFrame对象,其中包含匹配的结果。我们可以使用drop()函数来删除不需要的列:

python
# 删除不需要的列,只保留返回的值列和main_data中的其他列  
new_data = new_data.drop(['查找值列', '查找列'], axis=1)

5、保存结果

最后,我们可以将结果保存到新的CSV文件中:

python
# 将结果保存到新的CSV文件output.csv中  
new_data.to_csv('output.csv', index=False)

四、完整代码示例

import pandas as pd  # 读取main_data.csv表格和lookup_table.csv表格  
main_data = pd.read_csv('main_data.csv')  
lookup_table = pd.read_csv('lookup_table.csv')  # 检查两个表格的列是否匹配  
if main_data.columns != lookup_table.columns:  print("列不匹配,请检查列名是否一致")  exit()  # 根据指定的列进行合并,并将结果存储在new_data变量中  
new_data = main_data.merge(lookup_table, on='查找列', how='left')  # 使用'left'方式进行左连接,只保留main_data中的数据  # 如果查找列有重复的值,可能会出现重复的行。我们可以使用drop_duplicates()函数去除重复行。  
new_data = new_data.drop_duplicates(subset='查找列', keep='first')  # 保留第一个匹配的结果  # 删除不需要的列,只保留返回的值列和main_data中的其他列  
new_data = new_data.drop(['查找列'], axis=1)  # 注意:这里使用的是'查找列',而不是'查找值列'  # 将结果保存到新的CSV文件output.csv中  
new_data.to_csv('output.csv', index=False)

这个完善后的代码做了以下几件事情:

  1. 检查两个表格的列是否匹配,如果不匹配则给出错误提示并退出程序。
  2. 使用on参数进行左连接,只保留main_data中的数据。如果你想保留lookup_table中的数据,可以使用right_on参数进行右连接。
  3. 使用drop_duplicates()函数去除重复行,只保留第一个匹配的结果。
  4. 删除不需要的列,只保留返回的值列和main_data中的其他列。注意这里使用的是查找列,而不是查找值列
  5. 将结果保存到新的CSV文件output.csv中。

五、注意事项

  1. 列名匹配:在实现Vlookup功能时,确保"查找列"和"查找值列"在两个表格中具有相同的列名,否则merge()函数将无法正确匹配。
  2. 数据类型:确保"查找列"和"查找值列"中的数据类型一致,否则可能导致匹配错误。
  3. 重复数据:如果"查找值列"中有重复的数据,merge()函数将返回所有匹配的结果。你可能需要进一步处理重复数据或筛选结果。
  4. 性能优化:对于大型数据集,merge()操作可能会比较耗时。为了提高性能,可以考虑使用pandas的其他函数或方法,如map()、apply()等。
  5. 错误处理:在实际应用中,可能存在一些异常情况,如文件不存在、列名错误等。为了提高代码的健壮性,建议添加适当的错误处理机制。

六、总结

通过使用Python和pandas库,我们可以轻松实现Excel中的Vlookup功能。在实现过程中,我们使用了pandas的merge()函数来合并两个表格,并根据指定的列进行匹配。最后,我们将结果保存到新的CSV文件中。需要注意的是,在实现过程中需要确保列名匹配、数据类型一致、处理重复数据和优化性能等。通过熟练掌握pandas库,我们可以更加高效地处理和分析各种数据。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/637505.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Web概述

Web 概述:Web是World Wide Web的简称,是一个由许多互联网服务组成的信息空间。它由超文本文档、图像、视频和其他多媒体资源组成,并通过超文本传输协议(HTTP)进行传输。特点:Web的主要特点是其开放性和可访…

java数据结构与算法刷题-----LeetCode485. 最大连续 1 的个数

java数据结构与算法刷题目录(剑指Offer、LeetCode、ACM)-----主目录-----持续更新(进不去说明我没写完):https://blog.csdn.net/grd_java/article/details/123063846 文章目录 1. 法一,双指针2. 法二:变量计数 1. 法一…

Unity 面试篇|(八)Unity机试篇 【全面总结 | 持续更新】

目录 1.假设当前市场价一只鸡10元,一只鸭12元5角。请写一个函数ShowPrice,输入参数分别为鸡和鸭的个数(非负整型),功能为显示出总价钱,精确到分。例如调用ShowPrice(5,10)后输出175.…

63 C++ 多线程 timed_mutex,recursive_timed_mutex

前提 :以往的mutex如果拿锁子拿不到,就会一直等待。 timed_mutex 和 recursive_timed_mutex则不同,这两个提供了方法,可以不一直等待。 try() 方法--mutex 和 timed_mutex 都有,且说明都一样 bool try_lock();(C11 起)…

vant组件库的简单使用

1. 组件库的选择 组件库并不是唯一的,常用的组件库还有以下几种: pc 端:element-uielement-plus iviewelement-plus iviewant-design移动端:vant-uiMint UI (饿了么)Cube UI (滴滴)… 2. vant组件库 主要参考官网:Vant官网 3…

面对不平衡二元分类问题是否需要使用SMOTE技术?

摘要 在训练分类模型之前平衡数据是解决表格数据中不平衡二元分类任务的流行技术。平衡通常是通过复制少数样本或生成合成少数样本来实现的。虽然众所周知,平衡对每个分类模型的影响不同,但大多数先进的实证研究并未将强大的最先进(SOTA&…

python实例100第30例:一个5位数,判断它是不是回文数

题目:一个5位数,判断它是不是回文数。即12321是回文数,个位与万位相同,十位与千位相同。 程序分析:即12321是回文数,个位与万位相同,十位与千位相同。 程序源代码: #!/usr/bin/pyt…

elementbi表格的列合并,注意这是列合并不是行合并

先准备列合并代码 //先准备列合并代码 export function rowMergeHandle(arr, data) {if (!Array.isArray(arr) && !arr.length) return false;if (!Array.isArray(data) && !data.length) return false;let needMerge {};arr.forEach((i, idx) > {needMer…

Qt6入门教程 8:信号和槽机制(连接方式)

目录 一.一个信号与槽连接的例子 二.第五个参数 1.Qt::AutoConnection 2.Qt::DirectConnection 3.Qt::QueuedConnection 4.Qt::BlockingQueuedConnection 5.Qt::UniqueConnection 三.信号 四.connect函数原型 五.信号与槽的多种用法 六.槽的属性 一.一个信号与槽连接…

R语言【cli】——builtin_theme():内置的CLI主题

Package cli version 3.6.0 Description 此主题始终处于活动状态,并且位于主题堆栈的底部。 Usage builtin_theme(dark getOption("cli.theme_dark", "auto")) Argument 参数【dark】:是否使用黑暗主题。cli.theme_dark选项可用…

AIGC时代高效阅读论文实操

大家好,我是herosunly。985院校硕士毕业,现担任算法研究员一职,热衷于机器学习算法研究与应用。曾获得阿里云天池比赛第一名,CCF比赛第二名,科大讯飞比赛第三名。拥有多项发明专利。对机器学习和深度学习拥有自己独到的见解。曾经辅导过若干个非计算机专业的学生进入到算法…

3d渲染软件有哪些?3d云渲染推荐

目前市面上的3D渲染软件非常多,不同的建模软件都有自己的渲染方式,根据所处行业的不同和项目需要,设计师可以选择不同的软件帮助展示最终效果。 主流的渲染软件有:VRay和Corona:一般用于室内效果图渲染,与3…

go 语言爬虫库goquery介绍

文章目录 爬虫介绍goquery介绍利用NewDocumentFromReader方法获取主页信息Document介绍通过查询获取文章信息css选择器介绍goquery中的选择器获取主页中的文章链接 爬取总结 爬虫介绍 爬虫,又称网页抓取、网络蜘蛛或网络爬虫,是一种自动浏览互联网并从网…

chapter10-让你拥有“火眼金睛”的 Fiddr4 和其他工具

在前面的课程中,我们通过一个简单的天气预报服务,拓展了如何使用邮件、短信,以及部署在服务器上,完整的开发了一款可以正式使用的小程序。但是有的同学可能也会产生抱怨:这门课不是是爬虫入门吗?为什么讲的…

HttpServletRequest HttpEntity StringEntity 区别

HttpEntity: 在 Apache HttpClient 中是一个接口,它代表一个可读或可写的HTTP消息实体,包括请求体和响应体。 在发送HTTP请求时,可以附带各种类型的实体内容,而在接收HTTP响应时,则会从服务器获取相应的实…

如何在Servlet中获取请求参数的值

看看这个大佬做的动图吧! 在Servlet中,你可以使用HttpServletRequest对象来获取请求参数的值。HttpServletRequest对象提供了一些方法,允许你访问从客户端发送的请求信息。以下是一些获取请求参数的常用方法: getParameter(String…

node.js项目express的初始化

目录 1.初始化项目2.配置跨域3.开始编写API3.1准备3.2路由处理函数router_make下的user.js3.3路由模块router下的user.js3.4入口文件app.js里面去新增这段代码3.5启动项目进行测试 👍 点赞,你的认可是我创作的动力! ⭐️ 收藏,你…

小程序学习-19

Vant Weapp - 轻量、可靠的小程序 UI 组件库 ​​​​​ Vant Weapp - 轻量、可靠的小程序 UI 组件库 安装出现问题:rollbackFailedOptional: verb npm-session 53699a8e64f465b9 解决办法:http://t.csdnimg.cn/rGUbe Vant Weapp - 轻量、可靠的小程序…

Unity中URP下的SimpleLit片元着色器

文章目录 前言一、SimpleLit片元着色器大体框架1、传入 和 返回2、GPU实例化部分3、准备 BlinnPhong 光照模型计算需要的 SurfaceData4、准备 BlinnPhong 光照模型计算需要的 InputData5、进行 BlinnPhong 的计算、雾效颜色混合及透明度计算 二、准备SurfaceData1、SurfaceData…

基于SpringBoot+Redis的前后端分离外卖项目-苍穹外卖微信小程序端(十三)

地址簿相关功能 1.1 需求分析和设计1.1.1 产品原型1.1.2 接口设计1.1.3 表设计 1.2 代码实现1.2.1 Mapper层1.2.2 Service层1.2.3 Controller层 1.1 需求分析和设计 1.1.1 产品原型 地址簿,指的是消费者用户的地址信息,用户登录成功后可以维护自己的地…