程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式師世界 >> 編程語言 >  >> 更多編程語言 >> Python

Python 也可以實現 Excel 中的 “Vlookup” 函數?

編輯:Python

作者 | 朱小五

來源 | 快學Python

VLOOKUP函數大家應該都很熟悉吧,它可以幫我們根據指定的條件快速查找匹配出相應的結果,通常被用於核對、匹配多個表格之間的數據。與數據透視表,並稱為數據er最常用的兩大Excel功能。

那我們今天就聊聊,如何Python寫Excel中的“Vlookup”函數?

Excel

如圖所示,在“測試工資數據.xlsx”表格文件中有兩個sheet,其中sheet1是我們的數據源區域,而sheet2存儲的是待查找的員工姓名和工資。

在sheet2中,一列是員工姓名,一列是他們的對應工資。

vlookup函數就是在表格或數值數組的首列查找指定的數值,並由此返回表格或數組當前行中指定列處的數值。語法格式如下所示:

VLOOKUP (lookup_value, table_array, col_index_num, [range_lookup])

一般是匹配條件容易記混,如果為FALSE或0,則返回精確匹配,如果找不到,則返回錯誤值 #N/A。如果 range_lookup 為TRUE或1,函數 VLOOKUP 將查找近似匹配值。

openpyxl

在Python中利用openpyxl庫,就可以完成公式的填充。因此在使用openpyxl之前,需要安裝好這個庫。

pip install openpyxl

在openpyxl中,讀取已有的Excel文件,使用到的是load_workbook類,因此需要提前導入這個類。接著,實例化load_workbook("測試工資數據.xlsx")對象,得到一個工作簿對象。

然後,使用workbook["Sheet2"]激活該工作簿中的Sheet2表,表示我們要針對這個表進行操作。完成上述操作後,下面就可以進行vlookup公式的填寫了。

from openpyxl import load_workbook 
workbook = load_workbook("測試工資數據.xlsx")
sheet = workbook["Sheet2"]
sheet["B1"] = "基本工資(Python)"
for i in range(2, sheet.max_row+1): 
    sheet[f"B{i}"] = f'=VLOOKUP(A{i},Sheet1!A:B,2,FALSE)'
workbook.save(filename = "vlookup.xlsx")

首先,我們利用sheet["B1"] = "基本工資(Python)"修改B1單元格位置的表頭。然後通過for循環語句,循環第2行到最後一行,針對每一個B列單元格,我們都寫入上述vlookup公式。

最後記得保存一下即可。

不過需要注意,Python操作Excel的優勢在於處理大數據、或者重復性工作。在本次案例中,使用openpyxl庫向Excel中寫入Vlookup函數多少有點大材小用了。

經過openpyxl一番操作,如同莊周帶淨化。

Pandas

在這數據爆炸的時代,我們無時無刻不在和數據打交道。面對雜亂無章的數據Pandas 模塊應運而生了,它提供了數據導入、數據清洗、數據處理、數據導出等一套流程方法,可以很方便地幫助我們自動整理數據[2]

那麼Excel中的這種常用函數,Pandas模塊自然也是可以輕松搞定了。

在 Pandas 模塊中,調用merge()方法,可以幫助我們實現數據連接。

在交互式環境中輸入如下命令:

import pandas as pd
path = "測試工資數據.xlsx"
df_1 = pd.read_excel(path, sheet_name = 'Sheet1')
df_2 = pd.read_excel(path, sheet_name = 'Sheet2')
pd.merge(df_2["姓名"], df_1[["姓名", "基本工資"]], how="left", on="姓名")

這樣我們就用Python(openpyxl + Pandas)實現了Excel中的“Vlookup”函數。

往期回顧

“如今,99%以上的代碼都是垃圾!”

Deepfake 技術換臉真假難辨!

當你不再是程序員,很多事會脫離掌控

7歲男童因下棋太快,被機器人夾斷手指?

分享
點收藏
點點贊
點在看

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式師世界 All Rights Reserved