【干貨】如何利用 pandas 批量合并 Excel?

來(lái)源/早起python
今天分享一個(gè)利用Pandas進(jìn)行數(shù)據(jù)分析的小技巧,也是之前有粉絲在后臺(tái)進(jìn)行提問(wèn)的,即如何將多個(gè)pandas.dataframe保存到同一個(gè)Excel中。
其實(shí)只需要靈活使用pandas中的pd.ExcelWriter()方法即可。
假設(shè)現(xiàn)在我們有df1 df2 df3三個(gè)dataframe,需要將它們保存到同一個(gè)Excel的不同sheet中,只需要先創(chuàng)建一個(gè)ExcelWriter對(duì)象,然后不停寫(xiě)入就行
df1 = pd.read_csv('東京奧運(yùn)會(huì)獎(jiǎng)牌數(shù)據(jù).csv')
df2 = pd.read_excel("TOP250.xlsx")
df3 = pd.read_excel("2020年中國(guó)大學(xué)排名.xlsx")
writer = pd.ExcelWriter('test.xlsx')
df1.to_excel(writer,sheet_name="df1",index=False)
df2.to_excel(writer,sheet_name="df2",index=False)
df3.to_excel(writer,sheet_name="df3",index=False)
writer.save()
是不是和常見(jiàn)的文件讀寫(xiě)with方法類(lèi)似,我們也可以使用同樣的方法
with pd.ExcelWriter("test1.xlsx") as xlsxwriter:
df1.to_excel(xlsxwriter,sheet_name="df1",index=False)
df2.to_excel(xlsxwriter,sheet_name="df2",index=False)
df3.to_excel(xlsxwriter,sheet_name="df3",index=False)
得到的結(jié)果是一樣的,可以將多個(gè)df保存到一個(gè)Excel中
這個(gè)方法雖然簡(jiǎn)單好用,但是如果要保存的 df 太多了,一個(gè)一個(gè)手動(dòng)去讀取再手動(dòng)去保存就顯得十分麻煩,另外我們希望sheet是文件名,如果手動(dòng)復(fù)制粘貼,就更麻煩了。
我們先簡(jiǎn)單拿來(lái)一個(gè)小腳本「獲取指定目錄下的全部Excel文件名」
import os
def getfile(dirpath):
filelist = []
for root,dirs,files in os.walk(dirpath):
for file in files:
if file.endswith("xlsx") or file.endswith("csv"):
filelist.append(os.path.join(root,file))
return filelist
執(zhí)行一下,可以看到指定目錄下的全部Excel文件名
下面要做的,我想不用多說(shuō)了「循環(huán)讀取,自動(dòng)保存」
filelist = getfile('/Users/liuzaoqi/Desktop/zaoqi/2022公眾號(hào)文章/如何保存多個(gè)df')
writer = pd.ExcelWriter('test.xlsx')
for file in filelist:
if file.endswith("xlsx"):
df = pd.read_excel(file)
else:
df = pd.read_csv(file)
df.to_excel(writer,sheet_name=file.split('/')[-1].split('.')[0],index=False)
writer.save()
現(xiàn)在,當(dāng)前目錄下的全部Excel就自動(dòng)合并到一個(gè)Excel中的不同sheet中,并且sheet名是對(duì)應(yīng)的文件名
END
推薦閱讀
牛逼!Python常用數(shù)據(jù)類(lèi)型的基本操作(長(zhǎng)文系列第①篇)
牛逼!Python的判斷、循環(huán)和各種表達(dá)式(長(zhǎng)文系列第②篇)
吳恩達(dá)deeplearining.ai的經(jīng)典總結(jié)資料
Ps:從小程序直接獲取下載
