python excel 数据匹配实现vlookup功能_如何用python实现excel中的vlookup功能?
相信大家都知道excel的vlookup函數,也會運用,這是財務審計工作中經常會用到的函數之一,那用python如何實現這一功能呢?
1.
目標介紹
刀哥想將2017年科目余額表中,應收賬款明細的所有客戶,以科目編碼為索引,把所有客戶對應的期初期末及發生額金額引入到2017AR表中。
即獲取2017年科目余額表中的“科目名稱”、“期初借方”、“期初貸方”、“本期發生借方”、“本期發生貸方”、“期末借方”及“期末貸方”數并引入到與2017AR表科目編碼相對應的表格中,如下圖。
2017年科目余額表截圖
2017AR表截圖
2.
代碼實現
首先是調用需要用到的庫,比如pandas庫,它是python處理excel常用的庫,它能處理大量表格數據,有非常強大的功能。
1import pandas as pd
2import openpyxl,xlrd
3from openpyxl import Workbook
第二步是讀取原始數據來源表,即讀取2017年科目余額表,代碼如下。
1file_source = r'f:\Python\練習臨時存放\實現vlookup功能\科目余額表\2017年科目余額表.xls' #原始數據來源表路徑
2df_source = pd.read_excel(file_source) #讀取原始數據來源表
第三步是讀取導入目標表,即讀取2017AR表,此處因科目編碼數量多,手動輸入不現實,故用代碼實現輸入讀取,代碼如下。
1#把所有科目編碼寫入到df_target中
2file_target = r'f:\Python\練習臨時存放\實現vlookup功能\2017AR.xls' #導入目標表路徑
3list_ar_code = [] #定義一個應收賬款科目編碼列表
4workbook = xlrd.open_workbook(file_target) #讀取導入目標表
5balance_sheet = workbook.sheet_by_index(0)
6rows = balance_sheet.nrows
7for i in range(1,rows):
8 list_ar_code.append(balance_sheet.cell_value(i,0)) #將每一個科目編碼添加到應收賬款科目編碼列表中
9data = {'科目編碼':list_ar_code}
10df_target = pd.DataFrame(data)
第四步是將2017年科目余額表中需索引的全部信息與2017AR表進行合并,即實現vlookup功能,代碼如下。
1#需要導入哪些數據,就將哪些數據的列名寫上。
2dfneed = df_source[['科目編碼','科目名稱','期初借方','期初貸方','本期發生借方','本期發生貸方','期末借方','期末貸方']]
3#on='科目編碼',表示以“科目編碼”進行索引。
4df_target = pd.merge(df_target,dfneed,how='left',on='科目編碼')
這里是代碼實現的重點,需要索引哪些信息,就把哪些信息對應的列名添加進去即可。
比如本文需要“科目名稱”、“期初借方”、“期初貸方”、“本期發生借方”、“本期發生貸方”、“期末借方”及“期末貸方”這些數據,如果還需要“年度”、“會計期間”或其他信息,就把對應的列名添加進去,然后進行數據合并。
最后一步是寫入需要索引的信息并生成文件,代碼如下。
1#生成文件
2df_target.to_excel(file_target,index=False)
以上所有步驟完成后,最終生成的文件內容如下。
最后的合計數和核對欄是刀哥手動完成的,可以看出合計數與2017年科目余額表原表數據合計數能對上,與科目編碼也能對應上,說明引入過來的數據正確。
那多出來的那些科目編碼和空白欄是怎么回事呢,那就是刀哥下次要分享的內容,敬請期待,記得點個關注和收藏哦。
學習python,刀哥正在路上,你要一起來嗎?歡迎加入刀哥python學習交流群,來一起擼代碼吧。
總結
以上是生活随笔為你收集整理的python excel 数据匹配实现vlookup功能_如何用python实现excel中的vlookup功能?的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: java餐饮管理系统图片,基于jsp的酒
- 下一篇: js百度地图android定位不准,百度