excelperfect
標(biāo)簽:Python與Excel,pandas
才開通星空問答,就收到了小幾個問題,試著回答了,不知道滿不滿意,相信隨著水平的增長,會讓大家更加滿意的。相關(guān)鏈接>>>Excel與VBA,還有相關(guān)的Python,到這里來問我
其中有一個問題是:
如何用Python按照某列的關(guān)鍵詞分拆工作表,并保留表中原有的公式。
由于星空問答的功能還在完善中,不能上傳圖片和示例文件,并且我覺得這個問題正好可以檢驗一下近半個月學(xué)習(xí)Python與Excel相關(guān)知識的效果,于是自己編了一個示例,試了一下,感覺使用Python來實現(xiàn)一些任務(wù)確實很簡潔。在這里,與大家分享,也請高手們指點。
示例工作表
為演示起見,我制作了一個簡單的工作表,如下圖1所示。
圖1
這里,假設(shè)這個工作表所在工作簿的名字是“拆分示例.xlsx”,并且根據(jù)列C中的分類來拆分工作表,有兩個分類:建設(shè)項目和電商,因此應(yīng)該拆分成兩個工作表。此外,列F是計算列,其中包含有公式。
拆分到兩個工作簿
代碼很簡單:
import pandas as pd
df = pd.read_excel(r'D:\拆分示例.xlsx')
df1 = df.loc[df['分類'] == '建設(shè)項目']
df2 = df.loc[df['分類'] == '電商']
df1.to_excel(r'D:\建設(shè)項目.xlsx',index= False)
df2.to_excel(r'D:\電商.xlsx',index = False)
將該工作表按分類拆分成了兩個工作表,并放置到兩個新工作簿“建設(shè)項目.xlsx”和“電商.xlsx”中。
拆分到同一工作簿中的兩個工作表
代碼如下:
import pandas as pd
df = pd.read_excel(r'D:\拆分示例.xlsx')
df1 = df.loc[df['分類'] == '建設(shè)項目']
df2 = df.loc[df['分類'] == '電商']
writer1 = pd.ExcelWriter(r'D:\拆分示例.xlsx')
df1.to_excel(writer1, sheet_name = '建設(shè)項目', index =False)
df2.to_excel(writer1, sheet_name = '電商', index =False)
writer1.save()
下面,我們將代碼進(jìn)一步優(yōu)化。
使用列表
代碼如下:
import pandas as pd
df = pd.read_excel(r'D:\拆分示例.xlsx')
cat = ['建設(shè)項目', '電商']
for subcat in cat:
myfile = df.loc[df['分類'] ==subcat]
myfile.to_excel('D:\\'+subcat+'.xlsx',index = False)
再進(jìn)一步,我們不管分類列中有多個獨立的分類,直接按分類生成工作表。代碼如下:
import pandas as pd
df = pd.read_excel(r'D:\拆分示例.xlsx')
cat = df['分類'].unique()
for subcat in cat:
myfile = df.loc[df['分類'] ==subcat]
myfile.to_excel('D:\\'+subcat+'.xlsx',index = False)
聯(lián)系客服