前言
前面我们学习了如何将工作表进行合并,今天我们来看一下如何将工作表进行拆分。
一、pandas拆分订单表
我们今天用来拆分的表格是订单表.xlsx
它的路径如下:
订单表里面的数据如下:
我们先使用pandas库来将表格进行拆分,代码如下:
import pandas as pd
df1=pd.read_excel(r"E:\Python文件夹篇\拆分表格\订单表.xlsx")
wt=pd.ExcelWriter(r"E:\Python文件夹篇\拆分表格\订单表拆分.xlsx")
for i in df1["片区"].unique():
df1[df1["片区"]==i].to_excel(wt,i,index=False)
wt._save()
点击运行后,我们会在订单表所处的文件夹生成一个新的表格:订单表拆分
订单表拆分.xlsx的内容如下;:
可以看到,我们成功按照片区这一列将一个工作表分成了多个表格
二、xlwings拆分订单表
下面我们使用xlwings来拆分订单表
import xlwings as xw
app = xw.App(visible = False,add_book = False)
wb = app.books.open(r"E:\Python文件夹篇\拆分表格\订单表.xlsx")
ws = wb.sheets[0]
import pandas as pd
df = ws.range('A1').expand().options(pd.DataFrame).value
for n,g in df.groupby('片区'):
new_ws = wb.sheets.add(n)
new_ws['A1'].options(index = False).value = g
wb.save(r"E:\Python文件夹篇\拆分表格\订单表拆分2222.xlsx")
wb.close()
app.quit()
点击运行后,我们可以得到一个新的表格:订单表拆分222.xlsx
表格里面的内容如下:
我们和上面使用pandas进行拆分得到的结果进行对比可以看到,两张图片的区别在于,使用xlwinbg拆分得到的结果多了一个表格Sheet1,这是因为使用xlwings库创建的新的表格会默认带一个Sheet1.xlsx
三、openpyxl拆分订单表
import openpyxl
wb = openpyxl.load_workbook(r"E:\Python文件夹篇\拆分表格\订单表.xlsx")
ws = wb['Sheet1']
dv = list(ws.values)
dic = {}
for row in dv[1:]:
if row[0]in dic.keys():
dic[row[0]]+= [row]
else:
dic[row[0]] = [row]
for k,v in dic.items():
nws = wb.create_sheet(k)
nws.append(dv[0])
for xr in v:
nws.append(xr)
wb.save(r"E:\Python文件夹篇\拆分表格\订单表拆分3333.xlsx")
点击运行后,我们可以得到一个新的表格;订单表格333.xlsx
表格里面的内容如下;
这里我们得到的结果和使用pandas得到的结果是一样的。
总结
今天我们学习了通过pandas,xlwings以及openpyxl这三个python的第三方库,根据excel表格的某一列对表格进行拆分,拆分为多个工作表,这三种方法由于内在逻辑的不同,拆分后得到的结果也存在一些细小的差别,相信认真仔细阅读过这个系列文章的同学,一定可以从里面收获一些东西。
如果大家有一些特定的拆分表格的需求不知道该怎么做,也可以私信我哟。
最后,如果大家对这个系列的文章感兴趣,麻烦点一个关注和订阅哟!!!后面会持续跟新这方面的文章。