python合并多個EXCEL表

一、背景

在日常工作中經(jīng)?;赜玫綌?shù)據(jù)分析與統(tǒng)計工作,而在實施數(shù)據(jù)分析之前,最為最要的就是數(shù)據(jù)的搜集、整理工作。這里介紹一下多個相同格式的excel合并的處理。如果在excel文件表比較少時,手工合并還可以應(yīng)付,當(dāng)幾十個幾百個甚至更多的表時,手工合并效率會非常低,于是讓計算機(jī)自動合并處理,幫助我們完成工作就顯得非常有必要。

二、同一文件夾下合并excel文件

比如,在“2019年集團(tuán)大學(xué)生招聘”下有兩個表格,想要實現(xiàn)的是將這兩個表格數(shù)據(jù)合并。

各個表中的數(shù)據(jù)格式如下圖:

import pandas as pd
import os

#文件路徑
file_dir = r'C:\Users\Administrator\Desktop\2019年集團(tuán)大學(xué)生招聘'
#構(gòu)建新的表格名稱
new_filename = file_dir + '\\new_file.xls'
#找到文件路徑下的所有表格名稱,返回列表
file_list = os.listdir(file_dir)
new_list = []

for file in file_list:
    #重構(gòu)文件路徑
    file_path = os.path.join(file_dir,file)
    #將excel轉(zhuǎn)換成DataFrame
    dataframe = pd.read_excel(file_path)
    #保存到新列表中
    new_list.append(dataframe)

#多個DataFrame合并為一個
df = pd.concat(new_list)
#寫入到一個新excel表中
df.to_excel(new_filename,index=False)

結(jié)果:

三、不同文件夾下合并excel表

有時候表格存放在文件夾下,現(xiàn)在需要將不同文件夾下的表格合并,此時需要對程序進(jìn)行簡單的修改。

文件目錄結(jié)構(gòu)如下:

2019年集團(tuán)大學(xué)生招聘

  • ------公司A

    • ------A公司2019年度接收畢業(yè)生公示信息表
  • ------公司B

    • ------B公司2019年度接收畢業(yè)生公示信息表

在此之前需要先了解一下os模塊中的walk方法:

import os

file_dir = r'C:\Users\Administrator\Desktop\2019年集團(tuán)大學(xué)生招聘'
file_list = os.walk(file_dir)
for x,y,z in file_list: #x是文件路徑,y是目錄下的文件夾,z目錄下的文件
    print('x是{}'.format(x))
    print('y是{}'.format(y))
    print('z是{}'.format(z))
    print('*'*50)

結(jié)果:

x是./2019年集團(tuán)大學(xué)生招聘
y是['公司A', '公司B']
z是[]
**************************************************
x是./2019年集團(tuán)大學(xué)生招聘\公司A
y是[]
z是['A公司2019年度接收畢業(yè)生公示信息表.xlsx']
**************************************************
x是./2019年集團(tuán)大學(xué)生招聘\公司B
y是[]
z是['B公司2019年度接收高校畢業(yè)生信息表\xa0.xls']
**************************************************

注意:os.walk()方法,它可以查詢到目錄下不同文件夾中的文件。其中,x代表的是文件路徑,y代表的是目錄下的文件夾,z代表的是目錄下的文件。

import pandas as pd
import os

#文件路徑
file_dir = r'C:\Users\Administrator\Desktop\2019年集團(tuán)大學(xué)生招聘'
#構(gòu)建新的表格名稱
new_filename = file_dir + '\\new_file.xls'
#找到文件路徑下的所有表格名稱
file_list = os.walk(file_dir)
new_list = []

for dir_path,dirs,files in file_list:
    for file in files:
        #重構(gòu)文件路徑
        file_path = os.path.join(dir_path,file)
        #將excel轉(zhuǎn)換成DataFrame
        df = pd.read_excel(file_path)
        new_list.append(df)

#多個DataFrame合并為一個
df = pd.concat(new_list)
#寫入到一個新excel表中
df.to_excel(new_filename,index=False)

結(jié)果:

最后,需要注意,以上只是一個簡單的程序,對于數(shù)據(jù)量不是很大的場景,可以放心使用。但當(dāng)數(shù)據(jù)量非常大時,程序還需要進(jìn)一步優(yōu)化,因為程序是將所有的數(shù)據(jù)保存在一個列表中,最后再一次性寫入excel表中,這里需要考慮excel版本是否支持大數(shù)據(jù)量的寫入,另外,也要考慮程序資源消耗的問題,內(nèi)存可能不足。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容