學會一招!如何利用 pandas 批量合併 Excel?
大家好,我是菜鳥哥!
其實只需要靈活使用pandas中的pd.ExcelWriter()方法即可!
假設現在我們有df1 df2 df3三個dataframe,需要將它們儲存到同一個Excel的不同sheet中,只需要先建立一個ExcelWriter物件,然後不停寫入就行
df1 = pd.read_csv('東京奧運會獎牌資料.csv') df2 = pd.read_excel("TOP250.xlsx") df3 = pd.read_excel("2020年中國大學排名.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()
是不是和常見的檔案讀寫with方法類似,我們也可以使用同樣的方法
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)
得到的結果是一樣的,可以將多個df儲存到一個Excel中
這個方法雖然簡單好用,但是如果要儲存的 df 太多了,一個一個手動去讀取再手動去儲存就顯得十分麻煩,另外我們希望sheet是檔名,如果手動複製貼上,就更麻煩了。
這時,辦公自動化系列的文章就發揮作用了,我們先簡單拿來一個小指令碼「獲取指定目錄下的全部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
執行一下,可以看到指定目錄下的全部Excel檔名
下面要做的,我想不用多說了「迴圈讀取,自動儲存」
filelist = getfile('/Users/liuzaoqi/Desktop/zaoqi/2022公眾號文章/如何儲存多個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()
現在,當前目錄下的全部Excel就自動合併到一個Excel中的不同sheet中,並且sheet名是對應的檔名
如果你對本文的內容感興趣,不妨拿走程式碼試一下。
「其他文章」
- Android 自定義View - 柱狀波形圖 wave view
- Android技術分享|【Android踩坑】懷疑人生,主執行緒修改UI也會崩潰?
- 安卓TV外掛化9.0內聯崩潰原因及解決方案
- 測試員進階技能:如何有效地利用單元測試報告?
- Tekton 實戰完整示例
- 位元組的前端監控 SDK 是怎樣設計的
- 用Python繪製了若干張詞雲圖,驚豔了所有人
- 馬化騰:為什麼你們不在乎QQ等級,不用QQ了嗎?
- 幾個友好Java程式碼習慣建議
- Python 實現單例模式的五種寫法
- 挑戰不再寫Python for 迴圈
- HarmonyOS應用開發:鴻蒙JS實戰,計算器功能開發!
- Vitest:替代 Jest 的前端測試工具新選擇
- Vue的遞迴元件:渲染巢狀評論
- 在 Web 應用的執行時實現多分支並存和切換
- Umd 的包如何匯出 TS 型別
- Volatile:JVM 我警告你,我的人你別亂動
- 大反轉,iOS15.6比iOS14.8優化更好,續航提升很滿意,推薦升級
- “整潔架構” 和商家前端的重構之路
- 中文文字智慧糾錯知多少?