利用Python实现Excel的文件间的数据匹配功能
作者:chaodaibing 发布时间:2023-12-04 19:53:42
标签:Python,Excel,数据匹配
我们知道Excel有一个match函数,可以做数据匹配。
比如要根据人名获取成绩
而参考表sheet1的内容如下:
要根据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'],'参考字段')
来源:https://blog.csdn.net/chaodaibing/article/details/106719083


猜你喜欢
- 使用cv2.canny进行图像边缘检测CV2提供了提取图像边缘的函数canny。其算法思想如下:1.使用高斯模糊,去除噪音点(cv2.Gau
- 1、IIS为一个死循的执行过程设定执行时间(缺省为90秒)超时事件:<%response.buffer=true%><BO
- 聚合函数作用于一组数据,对那组数据返回一个值count :统计结果记录多少条数,max:统计最大值min:统计最小值sum:计算求和avg:
- python程序结构python“一切皆对象”,这是接触python听到最多的总结了。在python中最基层的单位应该就是对象了,对象需要靠
- Python3标准库操作系统接口os模块提供了不少与操作系统相关联的函数。>>> import os>>>
- 注:代码用 jupyter notebook跑的,分割线线上为代码,分割线下为运行结果1.导入库生成缺失值通过pandas生成一个6行4列的
- 首先 下载 jedis.jar包然后再 工程设置里面找到Libraries,点击+。添加下载好的jedis.jar包。点击OK退出即可创建J
- start many programsexecfile('C:/Dokumente und Einstellungen/schnei
- 本文实例讲述了python创建关联数组(字典)的方法。分享给大家供大家参考。具体分析如下:关联数组在python中叫字典,非常有用,下面是定
- channelGo语言中的通道(channel)是一种特殊的类型。在任何时候,同时只能有一个 goroutine 访问通道进行发送和获取数据
- 1、生成正态分布数据并绘制概率分布图import pandas as pdimport numpy as npimport matplotl
- 加了三个验证漏洞以及四个getshell方法# /usr/bin/env python3# -*- coding: utf-8 -*-# @
- 我们在平常的系统开发中常常会遇到像无限级分类这样的树型结构数据,现提供一个可用的数据库存储过程,可以完成树型结构数据的排序。环境:windo
- 问题描述:30 个人在一条船上,超载,需要 15 人下船。于是人们排成一队,排队的位置即为他们的编号。报数,从 1 开始,数到 9 的人下船
- 关于ref和$refs的用法及讲解,vue.js中文社区( https://cn.vuejs.org/v2/api/#ref )是这么讲解的
- 概述不知从何时起,Python和爬虫就如初恋一般,情不知所起,一往而深,相信很多朋友学习Python,都是从爬虫开始,其实究其原因,不外两方
- CategoricalDtype自定义排序当我们的透视表生成完毕后,有很多情况下需要我们对某列或某行值进行排序。排序有很多种方法。例如sor
- 微软在去年可谓是动作比较大的一年,在去年3月份推出了最新版的IE8浏览器,而在年底又发布全新的操作系统Windows 7,自此新产品的市场占
- 从一头雾水到模模糊糊,不明原理,暂时记录一下1.安装Qtcratersudo pacman -S qtcreater2.打开Qtcrater
- 主要步骤1.生成普通python数组(bytearray(),os.urandom())2.转换成numpy数组(numpy.array()