使用Python拆分Excel工作表

2021-11-10 14:40:54 浏览数 (1)

学习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社群,进行技术交流和提问,获取更多电子资料,并通过社群加入专门的微信讨论群,更方便交流。

0 人点赞