Python實(shí)現(xiàn)合并多個(gè)Excel文件中的指定sheet
本文將介紹一個(gè)用于合并多個(gè)Excel文件中指定sheet的Python代碼。這個(gè)功能可以方便地整理和分析數(shù)據(jù)。我們將逐步解釋代碼的每個(gè)部分,并提供示例用法。
導(dǎo)入庫(kù)
首先,我們導(dǎo)入了需要使用的三個(gè)庫(kù):os
、pandas
和time
。這些庫(kù)分別用于操作文件和文件夾、處理Excel文件以及計(jì)算程序執(zhí)行時(shí)間。
import os import pandas as pd import time
定義函數(shù)
我們定義了一個(gè)名為merge_excel_sheets
的函數(shù),用于將多個(gè)Excel文件中的指定sheet合并到一個(gè)新的Excel文件中。該函數(shù)接受三個(gè)參數(shù):folder_path
(文件夾路徑)、excel_list
(包含要合并的Excel文件和sheet名的列表)和output_file
(輸出文件路徑)。
def merge_excel_sheets(folder_path, excel_list, output_file): start_time = time.time() with pd.ExcelWriter(output_file) as writer: for excel_name, sheet_name in excel_list: file_path = os.path.join(folder_path, excel_name) df = pd.read_excel(file_path, sheet_name=sheet_name) sheet_name_combined = f"{excel_name[:-5]}-{sheet_name}" df.to_excel(writer, sheet_name=sheet_name_combined, index=False) end_time = time.time() execution_time = end_time - start_time print(f"程序執(zhí)行時(shí)間:{execution_time}秒")
在函數(shù)內(nèi)部,我們首先記錄程序開始執(zhí)行的時(shí)間。然后,我們使用pd.ExcelWriter
創(chuàng)建一個(gè)空的Excel Writer對(duì)象,用于寫入合并后的數(shù)據(jù)。
start_time = time.time() with pd.ExcelWriter(output_file) as writer:
接下來(lái),我們使用一個(gè)循環(huán)來(lái)處理每個(gè)Excel文件和sheet。對(duì)于每個(gè)文件和sheet,我們構(gòu)造完整的文件路徑,并使用pd.read_excel
讀取數(shù)據(jù)并存儲(chǔ)為DataFrame對(duì)象。
for excel_name, sheet_name in excel_list: file_path = os.path.join(folder_path, excel_name) df = pd.read_excel(file_path, sheet_name=sheet_name)
然后,我們構(gòu)造合并后的sheet名稱,格式為"原文件名-原sheet名",并使用df.to_excel
將DataFrame對(duì)象中的數(shù)據(jù)寫入到指定的sheet中。
sheet_name_combined = f"{excel_name[:-5]}-{sheet_name}" df.to_excel(writer, sheet_name=sheet_name_combined, index=False)
最后,我們計(jì)算程序執(zhí)行的時(shí)間,并將其打印出來(lái)。
end_time = time.time() execution_time = end_time - start_time print(f"程序執(zhí)行時(shí)間:{execution_time}秒")
示例用法
我們提供了一個(gè)示例用法,包括文件夾路徑、要合并的Excel文件和sheet的列表,以及輸出文件路徑。通過(guò)調(diào)用merge_excel_sheets
函數(shù),我們可以執(zhí)行合并操作。
folder_path = "E:\\工作內(nèi)容" excel_list = [ ("一店9月.xlsx", "原始數(shù)據(jù)"), ("二店9月.xlsx", "原始"), ("三店9月.xlsx", "原始數(shù)據(jù)"), ("四店9月.xlsx", "原始數(shù)據(jù)"), ("五店9月-離職.xlsx", "原始數(shù)據(jù)") ] output_file = os.path.join(folder_path, "output.xlsx") merge_excel_sheets(folder_path, excel_list, output_file)
完整代碼
import os import pandas as pd # 導(dǎo)入pandas庫(kù) import time # 導(dǎo)入時(shí)間庫(kù),用于計(jì)算程序執(zhí)行時(shí)間 def merge_excel_sheets(folder_path, excel_list, output_file): start_time = time.time() # 記錄程序開始執(zhí)行的時(shí)間 # 創(chuàng)建一個(gè)空的Excel Writer對(duì)象,用于寫入合并后的數(shù)據(jù) with pd.ExcelWriter(output_file) as writer: # 循環(huán)處理每個(gè)Excel文件和sheet for excel_name, sheet_name in excel_list: # 根據(jù)文件名和文件夾路徑,構(gòu)造完整的文件路徑 file_path = os.path.join(folder_path, excel_name) # 讀取指定Excel文件中指定sheet的數(shù)據(jù),并存儲(chǔ)為DataFrame類型的對(duì)象 df = pd.read_excel(file_path, sheet_name=sheet_name) # 構(gòu)造合并后的sheet名稱,格式為"原文件名-原sheet名" sheet_name_combined = f"{excel_name[:-5]}-{sheet_name}" # 將DataFrame對(duì)象中的數(shù)據(jù)寫入到指定sheet中 df.to_excel(writer, sheet_name=sheet_name_combined, index=False) end_time = time.time() # 記錄程序結(jié)束執(zhí)行的時(shí)間 execution_time = end_time - start_time # 計(jì)算程序執(zhí)行的時(shí)間 print(f"程序執(zhí)行時(shí)間:{execution_time}秒") # 輸出程序執(zhí)行的時(shí)間 # 示例用法 folder_path = "E:\\工作內(nèi)容" excel_list = [ ("一店9月.xlsx", "原始數(shù)據(jù)"), ("二店9月.xlsx", "原始"), ("三店9月.xlsx", "原始數(shù)據(jù)"), ("四店9月.xlsx", "原始數(shù)據(jù)"), ("五店9月-離職.xlsx", "原始數(shù)據(jù)") ] output_file = os.path.join(folder_path, "output.xlsx") merge_excel_sheets(folder_path, excel_list, output_file) # 調(diào)用合并函數(shù),將指定的Excel文件中指定sheet的數(shù)據(jù)進(jìn)行合并
到此這篇關(guān)于Python實(shí)現(xiàn)合并多個(gè)Excel文件中的指定sheet的文章就介紹到這了,更多相關(guān)Python合并Excel中指定sheet內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Python快速實(shí)現(xiàn)一鍵摳圖功能的全過(guò)程
你有沒想過(guò),Python也能成為這樣的一種工具:在只有一張圖片,需要細(xì)致地?fù)赋鋈宋锏那闆r下,能幫你減少摳圖步驟,這篇文章主要給大家介紹了關(guān)于Python快速實(shí)現(xiàn)一鍵摳圖功能的相關(guān)資料,需要的朋友可以參考下2021-06-06python pandas cumsum求累計(jì)次數(shù)的用法
這篇文章主要介紹了python pandas cumsum求累計(jì)次數(shù)的用法,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2019-07-07Python爬蟲爬取電影票房數(shù)據(jù)及圖表展示操作示例
這篇文章主要介紹了Python爬蟲爬取電影票房數(shù)據(jù)及圖表展示操作,結(jié)合實(shí)例形式分析了Python爬蟲爬取、解析電影票房數(shù)據(jù)并進(jìn)行圖表展示操作相關(guān)實(shí)現(xiàn)技巧,需要的朋友可以參考下2020-03-03Django Admin實(shí)現(xiàn)三級(jí)聯(lián)動(dòng)的示例代碼(省市區(qū))
多級(jí)菜單在很多上面都有應(yīng)用,這篇文章主要介紹了Django Admin實(shí)現(xiàn)三級(jí)聯(lián)動(dòng)(省市區(qū)),小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2018-06-06Python urllib、urllib2、httplib抓取網(wǎng)頁(yè)代碼實(shí)例
這篇文章主要介紹了Python urllib、urllib2、httplib抓取網(wǎng)頁(yè)代碼實(shí)例,本文直接給出demo代碼,代碼中包含詳細(xì)注釋,需要的朋友可以參考下2015-05-05一文輕松掌握python語(yǔ)言命名規(guī)范規(guī)則
這篇文章主要介紹了一文輕松掌握python語(yǔ)言命名規(guī)范規(guī)則,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2020-06-06使用FFmpeg來(lái)無(wú)損壓縮視頻文件的操作方法
FFmpeg是業(yè)內(nèi)有名的開源圖像視頻處理程序,在許多視頻剪輯軟件、圖像處理軟件中,都使用的FFmpeg,還有比如OBS這樣的導(dǎo)播軟件里面也使用了FFmpeg,FFmpeg的功能十分強(qiáng)大,遠(yuǎn)不止視頻壓縮的功能,本文介紹使用FFmpeg來(lái)無(wú)損壓縮視頻文件的操作方法,感興趣的朋友一起看看吧2023-12-12