欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

利用Python實(shí)現(xiàn)Excel的文件間的數(shù)據(jù)匹配功能

 更新時間:2020年06月16日 09:57:49   作者:chaodaibing  
這篇文章主要介紹了利用Python實(shí)現(xiàn)Excel的文件間的數(shù)據(jù)匹配,本文通過一個函數(shù)實(shí)現(xiàn)此功能,通過實(shí)例代碼給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下

我們知道Excel有一個match函數(shù),可以做數(shù)據(jù)匹配。
比如要根據(jù)人名獲取成績

在這里插入圖片描述

而參考表sheet1的內(nèi)容如下:

在這里插入圖片描述

要根據(jù)sheet1匹配每人的成績,用Excel是這么寫

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

意思就是獲取sheet1的B列的內(nèi)容,根據(jù)我的A列匹配sheet1的A列的內(nèi)容

但是如何用python實(shí)現(xiàn)這一點(diǎn)呢,我寫了一個函數(shù),非常好用,分享給大家。
這個函數(shù)考慮到了匹配多個字段,多個sheet。

import pandas as pd
def match(file,sheetnames,reffile,refsheet,targetsegs,matchseg)  #文件名 sheet列表 參考文件名 參考sheet 目標(biāo)字段列表 參考字段
	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]
	#匹配數(shù)據(jù)
	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
	#導(dǎo)出
	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'],'參考字段')

總結(jié)

到此這篇關(guān)于利用Python實(shí)現(xiàn)Excel的文件間的數(shù)據(jù)匹配功能的文章就介紹到這了,更多相關(guān)Python實(shí)現(xiàn)Excel的文件間的數(shù)據(jù)匹配內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

最新評論