“物料表”中包含全年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)...相关推荐

  1. 【excel】隔行引用另一表中连续数据

    更新: 2019-02-16 第一次发布,使用INDEX函数 2019-02-21 更新引用公式 2019-02-23 使用OFFSET函数 背景: 想要做一张物料卡表头,内容如图一所示,现在要把数百 ...

  2. mysql提供什么语句用于删除表中的数据_MySQL提供【 】语句用于删除表中的数据...

    MySQL提供[ ]语句用于删除表中的数据 答:暂无解析 出头教育: 当双活塞杆液压缸的缸体固定, 活塞杆与运动件固连时,其运动件的运动范 围等于液压缸有效行程的 答:三倍 可同时搜集若干调查单位资料 ...

  3. 数据仓库Hive编程——HiveQL的数据操作(一):向管理表中装载数据

    既然Hive没有行级别的数据插入.数据更新和删除操作,那么往表中装载数据的唯一途径就是使用一种"大量"的数据装载操作.或者通过其他方式仅仅将文件写入到正确的目录下. 在<Hi ...

  4. oracle显示多表数据,Oracle DB 使用连接显示多个表中的数据

    在Oracle9i之前的发行版中,该联接语法与美国国家标准协会(ANSI) 的标准不同.与以前发行版中的Oracle 专用联接语法相比,符合SQ • 编写SELECT语句,以使用等值联接和非等值联接访 ...

  5. 使用python套用excel模板_Python自动化办公Excel-从表中批量复制粘贴数据到新表

    1.模块安装 1)cmd模式下: pip install -i https://pypi.tuna.tsinghua.edu.cn/simple xlrd pip install -i https:/ ...

  6. 使用excel公式vlookup提取多个表中的数据

    =VLOOKUP($A$8,INDIRECT("'"&B1&"'!$A$2:$d$70"),4,0) [含义]: 1)A8中是要搜索的id, 2 ...

  7. 表格找不到任何要替换的数据,不能替换受保护的工作表中的数据。

    目录 解决方式 一.清除查找状态 二.查找含"~.?.*"的内容 三.检查前后空格 四.取消选中状态 五.撤销工作簿保护 六.更换查找范围 总结 解决方式 使用Excel或WPS查 ...

  8. MySQL删除表中的数据

    Mysql删除表中的数据有三种方法,分别是delete ,drop,truncate. 一.delete删除表中的数据 delete好from结合使用,格式一般为:delete from 表名 whe ...

  9. python对excel求和_Python 两个Excel文件对应位置求和并存储

    最近~老板给我的工作一直都有对大量的Excel的操作 比如两Excel对应位置求和,并存储.(两Excel表格的第一列和第一行是一毛一样的,不需要求和,原样保存!) 本着能躺着就不坐着的原则,只想快点 ...

最新文章

  1. CentOS7 编译安装 gcc/c++ 9.1
  2. 步步为营-20-XML
  3. android studio gradle配置_Unity打包Android最全攻略(含完整流程及常见问题)
  4. ssh登陆connection refused的解决办法
  5. VSCode工具常用命令总结
  6. PostgreSQL查询当前执行中SQL的执行计划——pg_show_plans
  7. 网友爆料乘顺风车被司机拿刀砍伤:或面临截肢危险...
  8. Oracle —— 如何执行SQL文件
  9. c语言数据类型、运算符和表达式
  10. MVC学习二:基础语法
  11. 华为轮值董事长郭平:5“机”协同是基础电力,ICT行业应用将像家用电器和工业电气化
  12. 商标注册流程与注意事项
  13. jenkins 管理员账号丢失
  14. 论文阅读-多任务(2020)-KL4MTL:用于多任务学习的知识蒸馏方法
  15. 基于 MVP + Glide + Retrofit + RxJava2.0 + butterknife 的C9MJ TV App
  16. tomcat 虚拟目录与显示目录中文件列表
  17. 国际通用计算机编码,计算机中的编码知识
  18. 卸载计算机flash,Flash Player卸载器(Flash Player Uninstaller)
  19. 智能手机TFT-LCD显示驱动芯片行业现状调研及趋势分析报告
  20. 好用插件分享(IE浏览器)

热门文章

  1. Dx11DemoBase 基类(二) 初始化 DirectX11 的 4个基本步骤
  2. Pdshell教程-利用现有数据库(没有PDM情况下)导出数据库PMD文件
  3. Oracle数据库表空间占用过大的解决办法
  4. 【struts2】struts2中的Action详解
  5. 面试官都会问的Mybatis面试题,你会这样回答吗?
  6. 5款最适合新手的包管理器
  7. tom启动报错:org.xml.sax.SAXParseException: Content is not allowed in prolog.
  8. ubuntu 安装星际译王词典
  9. The Code Commandments: Best Practices for OCCoding
  10. 我在51CTO的第一篇博文!