pd.ExcelWriter@python

用python按某一列拆分Excel工作表,将内容写入一个工作簿

本次以“按照表中的某一列,将一张表格拆分为多张表”的需求为例,简单介绍这个过程中用到的pd.ExcelWriter,及每一句的作用。


如上表《学生.xlsx》,假设有14万行28列,请按照学校名,拆分表格(不想用复制粘贴)。

writer = pd.ExcelWriter(out_worksheet)

writer对象的一大作用:让数据可以以工作表的分隔方式,不间断地写入工作簿,即得到一个包含多张工作表的工作簿。如果不用它,而是直接指定工作簿的路径,那么即使有循环,最终得到的结果还是只包含一个工作表的工作簿。

代码及解释如下

import pandas as pd
from time import time#用来计算时间,展示进度,减少焦虑in_ws='学生.xlsx'#给出要拆的表名
out_ws='学生-按学校拆分结果.xlsx'#给出结果工作簿的名称
lie_name='学校'#给出拆分依据的列名#以上,参数给好了,下面开始拆
start_time=time()#记住开始时间
# ~~~~~~~~~这里路径按自己的需求改,我目前将表放在桌面~~~~~~~~~
file='C:/Users/wowowo/Desktop/'+in_ws
sheet_df = pd.read_excel(file,names=None)#用pandas读取表格内容(有时候会需要加一个参数:encoding="utf-8")
# print(sheet_df.head())#可以查看数据是否读进来了,有无偏差
out_worksheet = 'C:/Users/wowowo/Desktop/' + out_ws
writer = pd.ExcelWriter(out_worksheet)
#这一句的作用是:创建一个工作簿对象,后面to_excel()要用到这个对象writer;
#如果你打印writer,得到的答案是:<pandas.io.excel._xlsxwriter._XlsxWriter object at 0x00000000027B0FA0>;
#插一句:这个工作簿对象writer有save()和close()方法,在写完数据后,要调用二者
#好像是只用save()就可以了,一旦用了save(),工作簿就关了,后面的数据就写不进去了!所以如果有循环,save()要写在循环外面
#seve()和close()的相同之处:都会关闭工作簿,从而事实上阻止后面的数据写入工作簿(即:程序运行不提示错误,但是后面的数据没有写进工作簿);
# 相同之二:save()、close()都只能用一次,如果把save()/close()写在循环里面,会提示:Calling close() on already closed file. 即:这个文件现在已经关掉啦,我没办法再关一次separatedDataList = list(sheet_df.groupby([lie_name]))
#这一步非常关键,直接将待拆的表,按照指定的列分组,然后装进一个list;
#sheet_df.groupby([lie_name])可以将数据按照lie_name(即学校)分组,但是给出的是个对象,并不是实际数据,如果要查看分组后的数据,目前就是把它list(),然后print(这个list)
# 但是注意,列表中的元素都是tuple,如('实验高中',表格数据blabla  [2694rows x 28 columns])的形式,<class 'tuple'>;
# 而tuple的元素是两个str,<class 'str'>,tuple第一个元素的长度是学校名字的长度(如实验高中则长4),第二个元素的长度是数据行数(如2694行则长2694)
for separatedData in separatedDataList:separatedData[1].to_excel(writer, sheet_name=separatedData[0], index=False)now_time = time()used_time = (now_time - start_time) / 60print(separatedData[0], '已处理', len(separatedData[1]), '行,', '已用时:%.2f' % used_time, '分')
writer.save()
# writer.close()#save()与close()都可,二选一,但注意,不要写到for里面去了
print('the end')

好了。

python怎样按某一列值拆分Excel表格相关推荐

  1. python使用openpyxl库按 行/列 合并/拆分 Excel表格

    文章目录 1.准备数据 按行合并 按行拆分 按列合并 按列拆分 保存文件 1.准备数据 准备一个名为test1的excel文件,该工作簿里有sheet1,sheet2,sheet3,sheet4四个工 ...

  2. python拆分excel的sheet为单文件_python拆分Excel表格并发送邮件

    工作中经常会出现需要将数据按一定的条件拆分并分发给不同的收件人的情况,今天就来给大家分享一下如何使用python拆分Excel表格并分发邮件. 以下表(2019年下半年销量数据表)数据为例: 首先我们 ...

  3. 【利用python+pandas 拆分excel表格】

    利用python拆分excel表格 我们常常会遇到一个表格中包含各种类型的数据,想要把表格按照不同类型拆分到多个工作簿,使用python几行代码就可以轻松搞定 首先是安装需要的包 先cmd命令行安装下 ...

  4. python xlrd安装_详解python中xlrd包的安装与处理Excel表格

    一.安装xlrd 地址 下载后,使用 pip install .whl安装即好. 查看帮助: >>> import xlrd >>> help(xlrd) Help ...

  5. python按某列拆分excel表格_Python对Excel按列值筛选并拆分表格到多个文件的代码...

    场景:集团中心下发本省数据时,并未按地市.业务拆分,现需要按地市.业务拆分并分发到地市. 本文利用Python的pandas包实现了以上场景. 注:本示例代码只实现按单列拆分,如果需要多列筛选拆分,请 ...

  6. python按某列拆分excel表格_python带格式拆分excel表单,copy库完美搞定

    python拆分excel表单,生成单独的excel文件,网上这方面的文章很多.但大多只讲主功能如何实现,让拆分后的表保持和原表单一致的格式,则鲜有人讲.本文通过调用copy库,完美实现带格式拆分表单 ...

  7. python按某列拆分excel表格_Python实现将excel表格按某列拆分为多个sheet(模板格式不变)...

    #将一个excel表格,按照某列分为不同的sheet,并且将id作为sheet表格的名称 from openpyxl import load_workbook #加载需要拆分的总表个 wb = loa ...

  8. python按某列拆分excel表格_把一张Excel表按照固定列分成不同工作薄的小白方法...

    这是结合百度经验和论坛上的资料整理的方法,分两步,第一步是把一个完整的工作表按照某一列分解为不同的工作表.第二步是把这些工作表在分别拆为工作薄. 个人觉得这是一个相对比较简单的方法,也尝试用Pytho ...

  9. python excel取列_python取excel表格第一列数据-python操作excel,使用xlrd模块,获取某一列数据的......

    怎样用python,读取excel中的一列数据 Python对Excel的读写主要有xlrd.copyxlwt.xlutils.openpyxl.xlsxwriter几种. 1.xlrd主要用来读百取 ...

最新文章

  1. 著名开源项目,神秘Bug影响超20000个项目,原因竟是作者删库跑路?
  2. 2015大学计算机基础,2015新生入学大学计算机基础复习资料
  3. 1025:保留12位小数的浮点数
  4. duty:用户名是手机号显示空格
  5. springbatch读取外部数据到mysql
  6. ffmpeg.c(ffmpeg.exe)调试笔记一
  7. 用汇编语言实现itoa函数
  8. Sharepoint SP1下创建自定义字段应注意的问题
  9. 图注意力网络(GAT) TensorFlow解析
  10. 628和822大K站:每个站长挥之不去的阴影
  11. 同轴全息matlab仿真,基于MATLAB的计算全息干涉图仿真
  12. python调用通达信函数用户指标_最新最全通达信公式教程大全(函数-指标-实例)...
  13. 2022年,美股将要上市的巨头能否逃过破发命运?
  14. 抖音protobuf分析
  15. 【Oracle】904: “xxx“: 标识符无效
  16. 基于Ant Design vue框架之三 删除功能细分
  17. rar和unrar压缩解压
  18. android新浪微博客户端毕业设计课题背景
  19. 美丽的窗花java分形_活动设计——美丽的窗花 (设计意图及教学反思)
  20. SocketException: 由于目标计算机积极拒绝,无法连接。 127.0.0.1:10000

热门文章

  1. 基于MATLAB的平面刚架有限元分析,基于MATLAB的平面刚架静力分析
  2. Mac 终端配置 oh-my-zsh 和自动补全
  3. 不愧是阿里P8!深入理解Java虚拟机pdf百度云
  4. php+js 五星评价,基于jquery实现五星好评
  5. [人工智能]北美18名校的数据挖掘,数据分析,人工智能及机器学习课程汇总
  6. 创建json数组与json数组渲染到HTML
  7. java重启tomcat
  8. jQuery -02
  9. 司马谈《论六家要旨》品读
  10. python高级应用_Python高级应用程序设计任务