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