手把手教你用Python批量實(shí)現(xiàn)文件夾下所有Excel文件的第二張表合并
前言
前幾天發(fā)布了合并Excel的文章,補(bǔ)充篇:盤(pán)點(diǎn)6種使用Python批量合并同一文件夾內(nèi)所有子文件夾下的Excel文件內(nèi)所有Sheet數(shù)據(jù),在留言區(qū)有個(gè)叫【有點(diǎn)意思】的粉絲在上面留言了兩個(gè)問(wèn)題,如下圖所示。
問(wèn)題:想向大佬們求教個(gè)問(wèn)題,如果我有這樣的需求,如何完成:
1、將A文件中名為a的sheet和B文件中名為b的sheet合并到一個(gè)sheet中去。
2、將文件夾下所有文件的第二張表合并。我做出來(lái)了,核心部分沒(méi)有用pandas,而且邏輯比較繁瑣。想求一用pandas解決的簡(jiǎn)潔方案。
二、解決思路
問(wèn)題一和問(wèn)題二的思路都挺常規(guī)的,就是取對(duì)應(yīng)的表格,然后進(jìn)行合并即可,這里仍然使用pandas來(lái)進(jìn)行實(shí)現(xiàn)!
三、解決方法
問(wèn)題一:將A文件中名為a的sheet和B文件中名為b的sheet合并到一個(gè)sheet中去。
這里基于之前【??(這是月亮的背面)】提供的代碼,我稍微做了些修改,代碼如下:
# coding: utf-8
# 將A文件中名為a的sheet和B文件中名為b的sheet合并到一個(gè)sheet中去
from pathlib import Path
import pandas as pd
path = r'E:\PythonCrawler\有趣的代碼\Python自動(dòng)化辦公\將A文件中名為a的sheet和B文件中名為b的sheet合并到一個(gè)sheet中去'
data_ex1 = pd.read_excel('ex1.xlsx', sheet_name='df1')
data_ex2 = pd.read_excel('ex2.xlsx', sheet_name='df2')
result = pd.concat([data_ex1, data_ex2], ignore_index=True)
result.to_excel('將A文件中名為a的sheet和B文件中名為b的sheet合并到一個(gè)sheet中去.xlsx', index=False, encoding='utf-8')
print('添加和合并完成!')
代碼運(yùn)行之后,會(huì)生成一個(gè)新的excel文件,如下圖所示:
合并的結(jié)果如下圖所示:
完成之后,我發(fā)給【有點(diǎn)意思】大佬看,不過(guò)這個(gè)答案勉強(qiáng)符合他的意思,他后來(lái)自己也寫(xiě)了一個(gè)代碼,能滿(mǎn)足自己的需求,這里發(fā)給大家看看。
問(wèn)題二:將文件夾下所有文件的第二張表合并
這里基于之前【??(這是月亮的背面)】提供的代碼,我稍微做了些修改,代碼如下:
# coding: utf-8
# 合并所有表格中的第二張表格
from pathlib import Path
import pandas as pd
path = Path(r'E:\PythonCrawler\有趣的代碼\Python自動(dòng)化辦公\將文件夾下所有文件的第二張表合并')
data_list = []
for i in path.glob("*.xls*"):
# data = pd.read_excel(i, sheet_name='df2')
data = pd.read_excel(i, sheet_name=1)
data_list.append(data)
result = pd.concat(data_list, ignore_index=True)
result.to_excel(path.joinpath('取所有excel表的df2表進(jìn)行合并.xlsx'), index=False, encoding='utf-8')
print('添加和合并完成!')
代碼運(yùn)行之后,會(huì)生成一個(gè)新的excel文件,如下圖所示:
合并的結(jié)果如下圖所示:
細(xì)心的小伙伴可能發(fā)現(xiàn)代碼中的第9行,我其實(shí)是注釋了,一開(kāi)始我測(cè)試的表格,命名規(guī)則很有規(guī)范,每個(gè)工作簿都有df1,df2,df3三張表格,所以在合并的時(shí)候直接指定了表名,但是這樣寫(xiě)就會(huì)有問(wèn)題,萬(wàn)一有個(gè)表格中沒(méi)有df2工作表,這個(gè)代碼肯定就會(huì)報(bào)錯(cuò)了,所以在【??(這是月亮的背面)】大佬的指導(dǎo)下,使用了sheet_name=1參數(shù),以索引來(lái)定位第二張表格,恰到好處,前提條件是你的Excel表格中必須要有第二張表格,否則就會(huì)出現(xiàn)下圖的錯(cuò)誤。
四、總結(jié)
我是Python進(jìn)階者。本文基于粉絲針對(duì)Python處理Excel指定表格合并的提問(wèn),給出了一個(gè)利用Python基礎(chǔ)+pandas處理的解決方案,完全滿(mǎn)足了粉絲的要求。