python数据分析--pandas,xlwings,openpyxl三种方法,按列值将一个工作表拆分为多个工作表

前言

前面我们学习了如何将工作表进行合并,今天我们来看一下如何将工作表进行拆分。

一、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表格的某一列对表格进行拆分,拆分为多个工作表,这三种方法由于内在逻辑的不同,拆分后得到的结果也存在一些细小的差别,相信认真仔细阅读过这个系列文章的同学,一定可以从里面收获一些东西。
如果大家有一些特定的拆分表格的需求不知道该怎么做,也可以私信我哟。
最后,如果大家对这个系列的文章感兴趣,麻烦点一个关注和订阅哟!!!后面会持续跟新这方面的文章。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值