python實現(xiàn)excel多個sheet表的查詢匹配
今天偶然間看到一位up主的python學習視頻,講的是python實現(xiàn)excel多個sheet表的查詢匹配,說有一個總表想要得到不同班級的同學的電話,但是這些電話分別放在五個班級的同學錄里(分別存放于5個sheet表內(nèi)),類似于我們?nèi)粘9ぷ髦杏玫降膃xcel中的vlookup,不同的是,要引用的表被分別存儲在不同的sheet表格里,這時候直接用vlookup是難以實現(xiàn)的。于是up主提供了一種來自于python的解決方案。


up主主要應用了python的xlwings和pandas兩個庫來進行實現(xiàn)。通過up主的視頻講解,學到了該方法。鏈接放在這里python實現(xiàn)多sheet的vlookup.但是由于之前沒學習和應用過xlsings庫,所以本著探索的心態(tài),嘗試只用pandas來解決問題。于是有了這篇文章,下面來展示一下基于pandas的方法。
1.首先導入pandas庫和excel表格

2.由于pandas導入多個sheet,生成的表格類似于字典,所以df_total.keys()可以生成所有的鍵,對應各個sheet表的名稱。但是字典不能計數(shù),所以轉(zhuǎn)換成列表進行數(shù)字切片,取0得到總表,也就是我們需要把電話號碼匹配的目的地表。我這個例子共八位同學來自四個班。

3.df_total生成的類似字典轉(zhuǎn)化成的列表取后四位就是4個班級的電話錄。通過循環(huán)遍歷取到每個班級的通訊錄加上輔助列所屬班級,依次添加到一個新的列表,生成一個新的總表,如下圖所示。

4.最后和up主的一樣,通過pd.merge進行匹配總表和新生成的總表,替換和刪除不需要的列就順利實現(xiàn)匹配到多個sheet里的電話。

5.總結(jié),xlwings和pandas都可以完成多sheet表匹配問題。一個問題不只有一種解決方案,需要找到適合自己的。