把数据存入excel文件_Python从原Excel表中抽出数据存入同一文件的新的Sheet(实例53)...
“物料表”中包含全年12个月的领用记录,现在要求将5月和8月的记录筛选出来新建工作表存放,并从原表中将这部分数据删掉。
于是乎,开始写码。先导入pandas
库,然后指定标题行(header = 2),读取Excel工作簿。展示其前5行,整齐划一,没问题。
import pandas as pddf = pd.read_excel("物料表.xlsx", header = 2)df.head()
由于要按月份筛选,而原表格没有月份这个字段,因此新增月份字段。月份从哪里来呢?直接从原表“日期”字段中提取,“.dt.month”
即可提取原日期中的月份。再展示前5行,最后面多了1列“月份”。一切顺利,继续。
df['月份']=df['日期'].dt.monthdf.head()
下面要删选出5月的数据,于是df[df['月份']==5]
暴力提取,并存入df5。展示一下前5行,正常。同样的方法删选8月份的数据。
df8 = df[df['月份']==8]df8.head()
然后获取除开5月和8月的数据。因涉及到批量重复操作,还是定义个函数比较简洁。函数Remove_data
包含两个参数,一个是df(即传入的DataFrame),另一个是月份列表。遍历月份列表,逐个剔除所选月份的数据。“df[df['月份']!=i]”表示只保留"i"之外的数据,"!=" 是不等号。此例,先剔除5月的数据,再剔除8月的数据,剔除好的数据存入df_rest
。
#去掉不需要的月份的数据def Remove_data(df,month=[]): for i in month: df = df[df['月份']!=i] return df
df_rest = Remove_data(df,[5,8])df_rest.head()
然后调用ExcelWriter
将三个数据写入同一个Excel文件。在写入前,先用drop
将月份列删除,它的使命已经完成,可以光荣退休了。ExcelWriter
在实例52中有详细说明,请出门右转。在正式使用的时候,Excel文件名直接使用"物料表.xlsx",则可将原文件覆盖。这里为了展示结果,所以用了文件名“物料表_1.xlsx”来区分。ExcelWriter中的模式使用的是默认“写”模式,因此会覆盖原同名文件。
with pd.ExcelWriter('物料表_1.xlsx', engine='openpyxl', datetime_format='YYYY-MM-DD') as writer: df5.drop('月份',axis = 1).to_excel(writer, sheet_name='5月',index = False) df8.drop('月份',axis = 1).to_excel(writer, sheet_name='8月',index = False) df_rest.drop('月份',axis = 1).to_excel(writer, sheet_name='剩余月份',index = False)
因为ExcelWriter
写入数据后,是不会调整单元格格式的,这样的结果很难看很不专业,所以需要用如下代码批量操作一下。
from openpyxl import load_workbookfrom openpyxl.styles import Border, Side, PatternFill, Font, GradientFill, Alignmentthin = Side(border_style="thin", color="000000")#定义边框粗细及颜色
wb = load_workbook("物料表_1.xlsx")for sheetname in wb.sheetnames: ws = wb[sheetname] # 调整列宽 ws.column_dimensions['A'].width = 12 ws.column_dimensions['C'].width = 15.5 ws.column_dimensions['G'].width = 10
#设置字号,对齐,缩小字体填充,加边框 for row_number in range(2, ws.max_row+1): for col_number in range(1,ws.max_column+1): c = ws.cell(row=row_number,column=col_number) c.font = Font(size=10) c.border = Border(top=thin, left=thin, right=thin, bottom=thin) c.alignment = Alignment(horizontal="left", vertical="center")wb.save("物料表_1.xlsx")
当当当当,上结果图。可见,在“剩余月份”中,5月和8月的数据已经毫不神奇地不见了。就酱。
如果您有需要处理的问题,可发邮件到我邮箱:donyo@qq.com,一起探讨解决方案。微信公众号输入“源文件”提取所有源文件及资料。
随手点亮下方“在看”呗,给加个鸡腿儿O(∩_∩)O~!
把数据存入excel文件_Python从原Excel表中抽出数据存入同一文件的新的Sheet(实例53)...相关推荐
- 【excel】隔行引用另一表中连续数据
更新: 2019-02-16 第一次发布,使用INDEX函数 2019-02-21 更新引用公式 2019-02-23 使用OFFSET函数 背景: 想要做一张物料卡表头,内容如图一所示,现在要把数百 ...
- mysql提供什么语句用于删除表中的数据_MySQL提供【 】语句用于删除表中的数据...
MySQL提供[ ]语句用于删除表中的数据 答:暂无解析 出头教育: 当双活塞杆液压缸的缸体固定, 活塞杆与运动件固连时,其运动件的运动范 围等于液压缸有效行程的 答:三倍 可同时搜集若干调查单位资料 ...
- 数据仓库Hive编程——HiveQL的数据操作(一):向管理表中装载数据
既然Hive没有行级别的数据插入.数据更新和删除操作,那么往表中装载数据的唯一途径就是使用一种"大量"的数据装载操作.或者通过其他方式仅仅将文件写入到正确的目录下. 在<Hi ...
- oracle显示多表数据,Oracle DB 使用连接显示多个表中的数据
在Oracle9i之前的发行版中,该联接语法与美国国家标准协会(ANSI) 的标准不同.与以前发行版中的Oracle 专用联接语法相比,符合SQ • 编写SELECT语句,以使用等值联接和非等值联接访 ...
- 使用python套用excel模板_Python自动化办公Excel-从表中批量复制粘贴数据到新表
1.模块安装 1)cmd模式下: pip install -i https://pypi.tuna.tsinghua.edu.cn/simple xlrd pip install -i https:/ ...
- 使用excel公式vlookup提取多个表中的数据
=VLOOKUP($A$8,INDIRECT("'"&B1&"'!$A$2:$d$70"),4,0) [含义]: 1)A8中是要搜索的id, 2 ...
- 表格找不到任何要替换的数据,不能替换受保护的工作表中的数据。
目录 解决方式 一.清除查找状态 二.查找含"~.?.*"的内容 三.检查前后空格 四.取消选中状态 五.撤销工作簿保护 六.更换查找范围 总结 解决方式 使用Excel或WPS查 ...
- MySQL删除表中的数据
Mysql删除表中的数据有三种方法,分别是delete ,drop,truncate. 一.delete删除表中的数据 delete好from结合使用,格式一般为:delete from 表名 whe ...
- python对excel求和_Python 两个Excel文件对应位置求和并存储
最近~老板给我的工作一直都有对大量的Excel的操作 比如两Excel对应位置求和,并存储.(两Excel表格的第一列和第一行是一毛一样的,不需要求和,原样保存!) 本着能躺着就不坐着的原则,只想快点 ...
最新文章
- CentOS7 编译安装 gcc/c++ 9.1
- 步步为营-20-XML
- android studio gradle配置_Unity打包Android最全攻略(含完整流程及常见问题)
- ssh登陆connection refused的解决办法
- VSCode工具常用命令总结
- PostgreSQL查询当前执行中SQL的执行计划——pg_show_plans
- 网友爆料乘顺风车被司机拿刀砍伤:或面临截肢危险...
- Oracle —— 如何执行SQL文件
- c语言数据类型、运算符和表达式
- MVC学习二:基础语法
- 华为轮值董事长郭平:5“机”协同是基础电力,ICT行业应用将像家用电器和工业电气化
- 商标注册流程与注意事项
- jenkins 管理员账号丢失
- 论文阅读-多任务(2020)-KL4MTL:用于多任务学习的知识蒸馏方法
- 基于 MVP + Glide + Retrofit + RxJava2.0 + butterknife 的C9MJ TV App
- tomcat 虚拟目录与显示目录中文件列表
- 国际通用计算机编码,计算机中的编码知识
- 卸载计算机flash,Flash Player卸载器(Flash Player Uninstaller)
- 智能手机TFT-LCD显示驱动芯片行业现状调研及趋势分析报告
- 好用插件分享(IE浏览器)
热门文章
- Dx11DemoBase 基类(二) 初始化 DirectX11 的 4个基本步骤
- Pdshell教程-利用现有数据库(没有PDM情况下)导出数据库PMD文件
- Oracle数据库表空间占用过大的解决办法
- 【struts2】struts2中的Action详解
- 面试官都会问的Mybatis面试题,你会这样回答吗?
- 5款最适合新手的包管理器
- tom启动报错:org.xml.sax.SAXParseException: Content is not allowed in prolog.
- ubuntu 安装星际译王词典
- The Code Commandments: Best Practices for OCCoding
- 我在51CTO的第一篇博文!