Python處理數(shù)據(jù)之匹配兩個(gè)Excel文件數(shù)據(jù)的實(shí)現(xiàn)方法
前言
當(dāng)需要處理兩個(gè)Excel文件的數(shù)據(jù),根據(jù)兩個(gè)Excel的某一些內(nèi)容進(jìn)行數(shù)據(jù)匹配,從而提取出相應(yīng)的數(shù)據(jù)時(shí),除了使用Excel自帶的Vlookup函數(shù),還能使用Python進(jìn)行處理。我是不會(huì)告訴你們我選擇Python處理的原因是對(duì)Excel的Vlookup不熟悉的。
1 前言自述
這是我在工作中遇到的一個(gè)數(shù)據(jù)處理需求問題,該問題有兩種解決方式,一種是Office高效辦公,一種是Python高效辦公。是的,我選擇了后者。將解決該問題的過程記錄下來,作為我使用Python高效辦公的一個(gè)紀(jì)念。在最后,為了方便其他沒有Python的同事使用,我還嘗試將該程序進(jìn)行了打包處理,發(fā)現(xiàn)雖然能打包,但是代碼行數(shù)增加了不少。因此,建議有Python基礎(chǔ)的朋友還是直接使用代碼比用打包好的程序比較好。
2 需求場(chǎng)景
有兩個(gè)excel文件,都放了大量的數(shù)據(jù):
第一個(gè)excel文件:
第二個(gè)excel文件:
需求是:將兩個(gè)excel文件中的數(shù)據(jù)進(jìn)行匹配,當(dāng)兩個(gè)excel文件中的項(xiàng)目名稱和項(xiàng)目號(hào)都一樣的時(shí)候,將第二個(gè)excel文件中的合同號(hào)填入到第一個(gè)文件中的合同號(hào)中。即匹配兩列相同列名的數(shù)據(jù),當(dāng)對(duì)應(yīng)行數(shù)的數(shù)據(jù)一模一樣的時(shí)候,在第一個(gè)excel文件中標(biāo)記新的數(shù)據(jù)出來。在這種情況下,通常是會(huì)面對(duì)大量數(shù)據(jù),即兩個(gè)excel文件有上千條數(shù)據(jù)。為了 方便理解,我將第二個(gè)文件中的不同用顏色標(biāo)了出來。
舉個(gè)例子:第二個(gè)excel文件中有兩個(gè)項(xiàng)目名稱A7(第三行和第七行),但對(duì)應(yīng)項(xiàng)目號(hào)能和第一個(gè)excel文件匹配得上的只有第3行,因此此時(shí)需要將第二個(gè)excel文件中第三行的合同號(hào)填入到第一個(gè)excel文件的序號(hào)7行對(duì)應(yīng)的合同號(hào)列表中。
3 代碼實(shí)現(xiàn)
import pandas as pd # 讀取excel1和excel2數(shù)據(jù) total_table = pd.read_excel('第一個(gè)excel文件.xlsx') subset_table = pd.read_excel('第二個(gè)excel文件.xlsx') # 在第一個(gè)excel中添加新列 total_table['合同號(hào)'] = "" # 根據(jù)第二個(gè)excel數(shù)據(jù)進(jìn)行匹配和填充合同號(hào) for index, row in subset_table.iterrows(): # 獲取分表中的兩列內(nèi)容 column1_match = row['項(xiàng)目名稱'] column2_match = row['項(xiàng)目號(hào)'] # 在第一個(gè)excel中查找匹配行 matched_rows = total_table.loc[(total_table['項(xiàng)目名稱'] == column1_match) & (total_table['項(xiàng)目號(hào)'] == column2_match)] # 填充合同號(hào) total_table.loc[matched_rows.index, '合同號(hào)'] = row['合同號(hào)'] # 保存修改后的第一個(gè)excel數(shù)據(jù)到新的文件 total_table.to_excel('新增合同號(hào)的excel文件.xlsx', index=False)
4 運(yùn)行結(jié)果
總結(jié)
到此這篇關(guān)于Python處理數(shù)據(jù)之匹配兩個(gè)Excel文件數(shù)據(jù)的文章就介紹到這了,更多相關(guān)Python匹配兩個(gè)Excel數(shù)據(jù)內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
python基于OpenCV模塊實(shí)現(xiàn)視頻流數(shù)據(jù)切割為圖像幀數(shù)據(jù)(流程分析)
這篇文章主要介紹了python基于OpenCV模塊實(shí)現(xiàn)視頻流數(shù)據(jù)切割為圖像幀數(shù)據(jù),這里今天主要是實(shí)踐一下視頻流數(shù)據(jù)的預(yù)處理工作,需要的朋友可以參考下2022-05-05VSCODE配置Markdown及Markdown基礎(chǔ)語法詳解
這篇文章主要介紹了VSCODE配置Markdown及Markdown基礎(chǔ)語法詳解,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2021-01-01Python3.x爬蟲下載網(wǎng)頁圖片的實(shí)例講解
今天小編就為大家分享一篇Python3.x爬蟲下載網(wǎng)頁圖片的實(shí)例講解,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2018-05-05Python查詢Mysql時(shí)返回字典結(jié)構(gòu)的代碼
MySQLdb默認(rèn)查詢結(jié)果都是返回tuple,輸出時(shí)候不是很方便,必須按照0,1這樣讀取,無意中在網(wǎng)上找到簡(jiǎn)單的修改方法,就是傳遞一個(gè)cursors.DictCursor就行2012-06-06深入理解python中pytest.ini的配置方法和參數(shù)
Pytest 是 Python 測(cè)試框架中最流行的一個(gè),而 pytest.ini 文件則是 pytest 配置文件的核心,在本文中,將詳細(xì)介紹 pytest.ini 文件的配置方法和可能的參數(shù),幫助您更好地掌握 Pytest 的使用,需要的朋友可以參考下2024-10-10Windows下Pycharm遠(yuǎn)程連接虛擬機(jī)中Centos下的Python環(huán)境(圖文教程詳解)
由于最近學(xué)習(xí)tensorflow的需要,tensorflow是在Linux環(huán)境下,使用的是Python。為了方便程序的調(diào)試,嘗試在Windows下的Pycharm遠(yuǎn)程連接到虛擬機(jī)中Centos下的Python環(huán)境,感興趣的朋友跟隨小編看看吧2020-03-03pandas去除重復(fù)列的實(shí)現(xiàn)方法
這篇文章主要介紹了pandas去除重復(fù)列的實(shí)現(xiàn)方法,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2019-01-01Python基礎(chǔ)第三方模塊requests openpyxl
這篇文章主要為大家介紹了Python基礎(chǔ)第三方模塊requests openpyxl使用示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-11-11