使用python拆分excel工作簿_Python笔记—拆分工作薄

2018-04-08学习笔记:

在之前的文章写过,使用Power Query可以合并多文件,多工作薄和多文件夹的合并。古语有云:分久必合,合久必分。

有合并,就需要有拆分,今天就来讲一讲使用Python将一个工作薄拆分成多个表的故事。

拆分套路1:将数据按地市拆分成多个工作薄

有一份7W条数据的工作薄,现在需要拆分成每个地市一个工作薄,

首先导入来看一下有多少个地市

import pandas as pd #导入模块

wb = pd.read_excel(r'd:\Me_py\everyday_py\资料\2018-04-08.xlsx') #打开工作薄

col = wb['地市'].unique() #对地市列去重复

print(col)

pd.read_excel函数:打开指定路径的工作薄,并赋值给wb变量

wb['地市'].unique():取地市列的唯一值,也就是去重复操作

print(col)打印,得到14个地市,那么就需要拆分成14个工作薄,

完整的6行代码:

import pandas as pd #导入模块

wb = pd.read_excel(r'd:\Me_py\everyday_py\资料\2018-04-08.xlsx') #打开工作薄

col = wb['地市'].unique() #对地市列去重复

for x in col:

child_wb = wb[wb['地市'] == x] #循环,得到每一个地市列表,

child_wb.to_excel(x+'.xlsx',index=False) #将得到的表保存成Excel格式

child_wb = wb[wb['地市'] == x] 循环col中的每个地市,然后去wb中筛选。

例如当x循环到百色的时候,wb[wb['地市'] == '百色'] 此时child_wb等于百色地市的所有数据表,然后使用to_excecl保存成Excel格式。

拆分套路2:将数据按地市拆分成一个工作薄的多张Sheet

同样是按地市拆分,每个地市一个Sheet表效果如下:

代码比套路1的多了三行:

import pandas as pd #导入模块

wb = pd.read_excel(r'd:\Me_py\everyday_py\资料\2018-04-08.xlsx') #打开工作薄

col = wb['地市'].unique() #对地市列去重复

new_wb = pd.ExcelWriter('拆分表.xlsx') #新建一个工作薄

for x in col:

child_wb = wb[wb['地市'] == x] #循环,得到每一个地市列表,

child_wb.to_excel(new_wb,index=False,sheet_name=x) #将得到的表保存成Excel格式

new_wb.save()

new_wb = pd.ExcelWriter('拆分表.xlsx') 新建一个工作薄;

然后循环地市,得到每个地市的子表child_wb = wb[wb['地市'] == x];

将所有子表写入新建的工作薄中 child_wb.to_excel(new_wb,index=False,sheet_name=x);

最后保存新建的工作薄 new_wb.save()

拆分套路3:将数据按地市拆分成多个工作薄,并且每个地市还需要按网别拆分Sheet

将问题继续升华,同样是按照地市拆分成多个工作薄,然而在每个地市的表中继续按照网别进行拆分,效果如下:

完整的代码

import pandas as pd #导入模块

wb = pd.read_excel(r'd:\Me_py\everyday_py\资料\2018-04-08.xlsx') #打开工作薄

col = wb['地市'].unique() #对地市列去重复

for x in col:

child_wb = wb[wb['地市'] == x] #循环地市,得到每个地市的子表

new_wb = pd.ExcelWriter(x + '.xlsx') # 按照每个地市新建一个工作薄

network_col = child_wb['网别'].unique() #对每个地市子表中的网别列去重复

for y in network_col:

network_sheet = child_wb[child_wb['网别'] == y] #在地市子表内循环网别,得到单个地市的网别子表

network_sheet.to_excel(new_wb,index=False,sheet_name=y) #将网别子表保存导对应的地市工作薄中

new_wb.save() #保存地市工作薄

思路是先循环地市,按照地市保存Excel工作薄,然后在每个地市的子表中进行第二次循环,得到每个地市的网别的sheet,最后把网别sheet写入对应的地市工作薄中并保存。

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值