Python實現(xiàn)Excel拆分與合并
在實際工作中,我們經(jīng)常會遇到各種表格的拆分與合并的情況。如果只是少量表,手動操作還算可行,但是如果是幾十上百張表,最好使用Python編程進行自動化處理。下面介紹兩種拆分案例場景,如何用Pandas實現(xiàn)Excel文件的拆分。
- 按條件將Excel文件拆分到不同的工作簿 假設(shè)現(xiàn)在有一個匯總表,內(nèi)部存儲了整個年級的成績數(shù)據(jù)。現(xiàn)在需要按照班級分類,將不同班級的數(shù)據(jù)拆分到不同的工作簿中,最終實現(xiàn)"三年級總成績單.xlsx"分成”三年一班.xlsx,三年二班.xlsx,三年三班.xlsx“三個不同班級的工作簿。導(dǎo)入pandas模塊,調(diào)用read_excel()方法,用于讀取“三年級總成績單”工作簿中的數(shù)據(jù)。接著,利用for循環(huán),按照“班級”篩選出不同的數(shù)據(jù),并將它們寫入不同的Excel文件中。源碼如下:
import pandas as pd
import os
# 在當前目錄下新建一個“班級”文件夾,然后拆分新文件到這個文件夾下
if not os.path.exists('班級'):
os.mkdir('班級')
df = pd.read_excel('../三年級總成績.xlsx')
# df['班級'].unique()獲取到是不同班級的名稱,df['班級']==i]用于篩選出不同班級中的數(shù)據(jù)。
for class_name in df['班級'].unique():
df[df['班級'] == class_name].to_excel(f"{os.path.join(os.getcwd(),'班級')}/{class_name}.xlsx", index=False)
執(zhí)行上述代碼后,結(jié)果如下圖:
- 按條件將Excel文件拆分到不同的工作表 假設(shè)現(xiàn)在有一個匯總表,內(nèi)部存儲了整個年級的成績數(shù)據(jù)。現(xiàn)在需要按照班級分類,將不同班級的數(shù)據(jù)拆分到一個工作簿的不同工作表中,并保留原來的匯總數(shù)據(jù)工作表。如下圖:
調(diào)用ExcelWriter()方法,它會幫助我們創(chuàng)建一個空的容器對象writer。基于這個對象,我們可以向同一個Excel文件的不同工作表中,寫入對應(yīng)的表格數(shù)據(jù)。源碼如下:
import pandas as pd
import os
df = pd.read_excel('../三年級總成績.xlsx')
writer = pd.ExcelWriter('三年級總成績單.xlsx')
df.to_excel(writer, sheet_name='總成績', index=False)
for j in df['班級'].unique():
df[df['班級'] == j].to_excel(writer, sheet_name=j, index=False)
writer.save()
第一次調(diào)用to_excel()方法時,我們將原來的“匯總數(shù)據(jù)工作表”寫入這個容器對象,并指明了工作表名“總成績”。接著利用for循環(huán)遍歷總表,再次調(diào)用to_excel()方法,并將拆分后的每個班級的數(shù)據(jù),分別寫入同一個容器對象。此時,這個容器對象不僅保存了原來的“匯總數(shù)據(jù)工作表”,還保存了拆分后的每個班級的數(shù)據(jù)。最后調(diào)用容器對象的save()方法,即可將拆分后的數(shù)據(jù)寫入Excel文件中,最終效果如上圖所示。喜歡的朋友可以自己體驗一下,歡迎轉(zhuǎn)發(fā)分享。下期還有合并數(shù)據(jù)的案例與大家分享。感興趣的朋友可以在小蜜蜂AI的ChatGPT問答獲得更多的答案。網(wǎng)址:https://zglg.work。
評論
圖片
表情
