久久r热视频,国产午夜精品一区二区三区视频,亚洲精品自拍偷拍,欧美日韩精品二区

您的位置:首頁(yè)技術(shù)文章
文章詳情頁(yè)

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

瀏覽:135日期:2022-07-21 09:40:57

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

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

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

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

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

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)呢,我寫(xiě)了一個(gè)函數(shù),非常好用,分享給大家。這個(gè)函數(shù)考慮到了匹配多個(gè)字段,多個(gè)sheet。

import pandas as pddef 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:passalldata[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’,’參考頁(yè)’,[’要匹配的字段1,字段2’],’參考字段’)

總結(jié)

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

標(biāo)簽: python
相關(guān)文章:
主站蜘蛛池模板: 汤阴县| 呼图壁县| 博爱县| 静乐县| 安图县| 阿鲁科尔沁旗| 金溪县| 宝丰县| 武义县| 龙江县| 元阳县| 东至县| 民丰县| 万安县| 明星| 洞口县| 恭城| 封丘县| 宾阳县| 曲周县| 连江县| 霍邱县| 来凤县| 江达县| 枣强县| 襄垣县| 屏东市| 长治县| 循化| 包头市| 呼和浩特市| 会理县| 城口县| 许昌县| 新民市| 西和县| 团风县| 容城县| 河南省| 吴旗县| 武宁县|