利用Python实现Excel的文件间的数据匹配功能


Posted in Python onJune 16, 2020

我们知道Excel有一个match函数,可以做数据匹配。
比如要根据人名获取成绩

利用Python实现Excel的文件间的数据匹配功能

而参考表sheet1的内容如下:

利用Python实现Excel的文件间的数据匹配功能

要根据sheet1匹配每人的成绩,用Excel是这么写

index(Sheet1!B:B,MATCH(A2,Sheet1!A:A,0))

意思就是获取sheet1的B列的内容,根据我的A列匹配sheet1的A列的内容

但是如何用python实现这一点呢,我写了一个函数,非常好用,分享给大家。
这个函数考虑到了匹配多个字段,多个sheet。

import pandas as pd
def match(file,sheetnames,reffile,refsheet,targetsegs,matchseg)  #文件名 sheet列表 参考文件名 参考sheet 目标字段列表 参考字段
	alldata=pd.read_excel(file,None)
	refdata=pd.read_excel(reffile,refsheet)
	#获取映射字典
	maps={}
	for i in refdata.index:
		MatchSeg=refdata.loc[i,matchseg]
		maps[MatchSeg]={}
		for seg in targetsegs:
			maps[MatchSeg][seg]=refdata.loc[i,seg]
	#匹配数据
	for sheet in sheetnames:
		if(isinstance(sheet,int)):
			sheet=list(alldata.keys())[sheet]

		data=alldata[sheet].fillna('-')
		for i in data.index:
			MatchSeg=data.loc[i,matchseg]
			for seg in targetsegs:
				try:
					data.loc[i,seg]=map[MatchSeg][seg]
				except Exception as e:
					pass

		alldata[sheet]=data
	#导出
	with pd.ExcelWriter(file) as writer:
		for sheet in alldata.keys():
			alldata[sheet].to_excel(writer,sheet,index=False)
			
match('要匹配的表.xlsx',[0,1],'参考表.xlsx','参考页',['要匹配的字段1,字段2'],'参考字段')

总结

到此这篇关于利用Python实现Excel的文件间的数据匹配功能的文章就介绍到这了,更多相关Python实现Excel的文件间的数据匹配内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Python 相关文章推荐
python中xrange和range的区别
May 13 Python
Python中的filter()函数的用法
Apr 27 Python
python查看FTP是否能连接成功的方法
Jul 30 Python
Python爬取APP下载链接的实现方法
Sep 30 Python
Python实现查找匹配项作处理后再替换回去的方法
Jun 10 Python
python基础while循环及if判断的实例讲解
Aug 25 Python
python实现简单tftp(基于udp协议)
Jul 30 Python
python读写配置文件操作示例
Jul 03 Python
django数据关系一对多、多对多模型、自关联的建立
Jul 24 Python
python + selenium 刷B站播放量的实例代码
Jun 12 Python
Selenium+BeautifulSoup+json获取Script标签内的json数据
Dec 07 Python
Python数据清洗工具之Numpy的基本操作
Apr 22 Python
Pytorch 使用CNN图像分类的实现
Jun 16 #Python
利用python中的matplotlib打印混淆矩阵实例
Jun 16 #Python
Python SMTP配置参数并发送邮件
Jun 16 #Python
基于matplotlib中ion()和ioff()的使用详解
Jun 16 #Python
Python数据相关系数矩阵和热力图轻松实现教程
Jun 16 #Python
matplotlib.pyplot.matshow 矩阵可视化实例
Jun 16 #Python
使用python matploblib库绘制准确率,损失率折线图
Jun 16 #Python
You might like
PHP连接MySQL的2种方法小结以及防止乱码
2014/03/11 PHP
PHP两种去掉数组重复值的方法比较
2014/06/19 PHP
php中常见的sql攻击正则表达式汇总
2014/11/06 PHP
PHP实现图片自动清理的方法
2015/07/08 PHP
php检查字符串中是否有外链的方法
2015/07/29 PHP
统计出现最多的字符次数的js代码
2010/12/03 Javascript
js判断生效时间不得大于失效时间的思路及代码
2013/04/23 Javascript
Extjs4中Form的使用之本地hiddenfield
2013/11/26 Javascript
屏蔽IE弹出"您查看的网页正在试图关闭窗口,是否关闭此窗口"的方法
2013/12/31 Javascript
使用CSS3的scale实现网页整体缩放
2014/03/18 Javascript
jstree的简单实例
2016/12/01 Javascript
常用JS图片滚动(无缝、平滑、上下左右滚动)代码大全(推荐)
2016/12/20 Javascript
详解Vue监听数据变化原理
2017/03/08 Javascript
nodejs和C语言插入mysql数据库乱码问题的解决方法
2017/04/14 NodeJs
使用watch在微信小程序中实现全局状态共享
2019/06/03 Javascript
利用Angular7开发一个Radio组件的全过程
2019/07/11 Javascript
在vue中实现echarts随窗体变化
2020/07/27 Javascript
vue自定义组件(通过Vue.use()来使用)即install的用法说明
2020/08/11 Javascript
[04:26]DOTA2上海特锦赛小组赛第二日 TOP10精彩集锦
2016/02/27 DOTA
50行代码实现贪吃蛇(具体思路及代码)
2013/04/27 Python
Django Rest framework之权限的实现示例
2018/12/17 Python
anaconda中更改python版本的方法步骤
2019/07/14 Python
如何在pycharm中安装第三方包
2020/10/27 Python
德国原装品牌香水、化妆品和手表网站:BRASTY.DE
2016/10/16 全球购物
英国在线药房和在线医生:LloydsPharmacy
2019/10/21 全球购物
腾讯公司的一个sql题
2013/01/22 面试题
大学生个人求职信
2014/06/02 职场文书
数控专业毕业生求职信
2014/06/12 职场文书
专科生就业求职信
2014/06/22 职场文书
授权委托书怎么写
2014/09/25 职场文书
三方协议书
2015/01/27 职场文书
《和时间赛跑》读后感3篇
2019/12/16 职场文书
python 算法题——快乐数的多种解法
2021/05/27 Python
MySQL删除和插入数据很慢的问题解决
2021/06/03 MySQL
MySQL 不等于的三种使用及区别
2021/06/03 MySQL
Vue自定义铃声提示音组件的实现
2022/01/22 Vue.js