学习Excel技术,关注微信公众号:
excelperfect
标签:Python与Excel,pandas
才开通星空问答,就收到了小几个问题,试着回答了,不知道满不满意,相信随着水平的增长,会让大家更加满意的。相关链接>>>Excel与VBA,还有相关的Python,到这里来问我
其中有一个问题是:
如何用Python按照某列的关键词分拆工作表,并保留表中原有的公式。
由于星空问答的功能还在完善中,不能上传图片和示例文件,并且我觉得这个问题正好可以检验一下近半个月学习Python与Excel相关知识的效果,于是自己编了一个示例,试了一下,感觉使用Python来实现一些任务确实很简洁。在这里,与大家分享,也请高手们指点。
示例工作表
为演示起见,我制作了一个简单的工作表,如下图1所示。
图1
这里,假设这个工作表所在工作簿的名字是“拆分示例.xlsx”,并且根据列C中的分类来拆分工作表,有两个分类:建设项目和电商,因此应该拆分成两个工作表。此外,列F是计算列,其中包含有公式。
拆分到两个工作簿
代码很简单:
import pandas as pd
df = pd.read_excel(r'D:拆分示例.xlsx')
df1 = df.loc[df['分类'] == '建设项目']
df2 = df.loc[df['分类'] == '电商']
df1.to_excel(r'D:建设项目.xlsx',index= False)
df2.to_excel(r'D:电商.xlsx',index = False)
将该工作表按分类拆分成了两个工作表,并放置到两个新工作簿“建设项目.xlsx”和“电商.xlsx”中。
拆分到同一工作簿中的两个工作表
代码如下:
import pandas as pd
df = pd.read_excel(r'D:拆分示例.xlsx')
df1 = df.loc[df['分类'] == '建设项目']
df2 = df.loc[df['分类'] == '电商']
writer1 = pd.ExcelWriter(r'D:拆分示例.xlsx')
df1.to_excel(writer1, sheet_name = '建设项目', index =False)
df2.to_excel(writer1, sheet_name = '电商', index =False)
writer1.save()
下面,我们将代码进一步优化。
使用列表
代码如下:
import pandas as pd
df = pd.read_excel(r'D:拆分示例.xlsx')
cat = ['建设项目', '电商']
for subcat in cat:
myfile = df.loc[df['分类'] ==subcat]
myfile.to_excel('D:\' subcat '.xlsx',index = False)
再进一步,我们不管分类列中有多个独立的分类,直接按分类生成工作表。代码如下:
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)
遗憾的是,我现在还不知道怎么在拆分后的工作表中保留原公式?有知道的吗,欢迎留言。
欢迎在下面留言,完善本文内容,让更多的人学到更完美的知识。
欢迎到知识星球:完美Excel社群,进行技术交流和提问,获取更多电子资料,并通过社群加入专门的微信讨论群,更方便交流。