场景:集团中心下发本省数据时,并未按地市、业务拆分,现需要按地市、业务拆分并分发到地市。

本文利用Python的pandas包实现了以上场景。

数据示例如下:

以上Excel需要按地市筛选拆分并另存为每个地市一个文件。

now, show u the code:

# -*- coding: utf-8 -*-
"""
Created on Fri Nov  1 09:53:30 2019@author: lanxuxml应用场景:包含多个sheet的Excel 需要按列筛选出来另存为其它文件"""import pandas as pdsplit_excel_name_head = r'F:\20191129\jidi\湖南省_JD_'split_excel_name_tail = r'_疑似同一客户合并.xlsx'xlsx_name = r"F:\20191129\湖南省_JD_疑似同一客户合并.xls"#用来筛选的列名
filter_column_name = u'市'
filter_column_name_quxian = u'区县'
#获取所有sheet名
df = pd.ExcelFile(xlsx_name)
sheet_names = df.sheet_names
#删除sheet名为数据量的sheet
sheet_names.remove('数据量')
#不需要筛选的sheet名
sheet_not_filter_names = ['场景说明']#将该列去重后保存为list
city_names = []
#从市 区县 两列 获取所有sheet中的唯一值
for sheet_name in sheet_names:try :tmp_df = pd.read_excel(xlsx_name, sheet_name=sheet_name)city_names = city_names + tmp_df[filter_column_name].unique().tolist() + tmp_df[filter_column_name_quxian].unique().tolist()except :pass
#与实际市名求交集再去重,避免出现空表或者空sheet
city_names_unique_all = ['娄底市', '湘西土家族苗族自治州', '邵阳市', '常德市', '长沙市', '株洲市', '郴州市', '益阳市', '永州市', '怀化市', '湘潭市', '衡阳市', '岳阳市','张家界市']
city_names = list(set(city_names).intersection(set(city_names_unique_all)))
city_names = list(set(city_names))
#所有场景没有数据的市
city_no_data = list(set(city_names_unique_all).difference(set(city_names)))
print(city_no_data)
tmp_report_writer = pd.ExcelWriter(xlsx_name + u"_拆分报告_临时.xlsx")
report_writer = pd.ExcelWriter(xlsx_name + u"_拆分报告.xlsx")for city_name in city_names:city_excel_name = split_excel_name_head + str(city_name) + split_excel_name_tailwriter = pd.ExcelWriter(city_excel_name)  #将city_name转为listcity_name_to_list = []city_name_to_list.append(city_name)tmp_df = pd.DataFrame(city_no_data)for sheet_name in sheet_names:tmp_df = pd.read_excel(xlsx_name, sheet_name=sheet_name)tmp_sliced = pd.DataFrame()if sheet_name not in sheet_not_filter_names:tmp_sheet = tmp_df[tmp_df[filter_column_name].isin(city_name_to_list)]#按市tmp_sheet = tmp_sheet.append(tmp_df[tmp_df[filter_column_name_quxian].isin(city_name_to_list)])#增加按区县有地市的行tmp_sheet = tmp_sheet.drop_duplicates(keep = 'first')#去重#无法通过 市 区县两列拆分的数据tmp_sliced = tmp_df.append(tmp_sheet).drop_duplicates(keep = False)else :tmp_sheet = tmp_dftmp_sheet.to_excel(excel_writer=writer, sheet_name=sheet_name, encoding="utf-8", index=False)tmp_sliced.to_excel(excel_writer=tmp_report_writer, sheet_name=sheet_name, encoding="utf-8", index=False)writer.save()writer.close()tmp_report_writer.save()tmp_report_writer.close()for sheet_name in sheet_names:ori_df = pd.read_excel(xlsx_name, sheet_name=sheet_name)sli_df = pd.read_excel(xlsx_name + u"_拆分报告_临时.xlsx", sheet_name=sheet_name)ori_df = ori_df.append(sli_df).drop_duplicates(keep = False)ori_df.to_excel(excel_writer=report_writer, sheet_name=sheet_name, encoding="utf-8", index=False)report_writer.save()report_writer.close()

利用Python对Excel按列值筛选并拆分表格到多个文件相关推荐

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

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

  2. 如何利用python将excel表格中筛选出来的每一份数据各自另存为新的excel文件?

    如何利用python将excel表格中筛选出来的每一份数据各自另存为新的excel文件? 1.问题描述 2.解决过程 2.1 问题分析: 2.2 解决思路 3.运行结果 1.问题描述 最近在处理一堆工 ...

  3. python 表格格式输出_利用python对excel中一列的时间数据更改格式操作

    问题场景:需要将下列的交期一列的数据格式更改成2019/05/10 存货编码 尺寸 数量 交期 0 K10Y0190000X B140 200 2019-05-10 00:00:00 1 K10Y01 ...

  4. python对excel数据更改_利用python对excel中一列的时间数据更改格式代码示例

    本篇文章小编给大家分享一下利用python对excel中一列的时间数据更改格式代码示例,文章代码介绍的很详细,小编觉得挺不错的,现在分享给大家供大家参考,有需要的小伙伴们可以来看看. 问题场景:需要将 ...

  5. 【Python数据分析】利用Python删除EXCEL表格中指定的列数据或行数据

    如何利用Python删除EXCEL表格中指定的列数据?今天与大家一起分享一下DataFrame对象的drop()函数,drop()函数可根据标签删除EXCEL表格中的列数据或行数据,其语法格式如下: ...

  6. python获取excel某一列所有值-Python读取Excel一列并计算所有对象出现次数的方法...

    第一种方法 import pandas as pd from collections import Counter data = '参赛信息.xlsx' data = pd.read_excel('参 ...

  7. 利用python处理excel表格

    利用python处理excel表格 注意事项:在excel打开状态下无法进行写入和保存,但是可以读取. 1.excel的两种格式(xlsx,xls) 建议使用xlsx,遇到xls统统都用pandas转 ...

  8. python 利用python处理excel文件

    python 利用python处理excel文件 1.相关包的安装 2.读取.创建excel文件,遍历内容 3.字体样式调整 4.填充样式调整 5.边框样式调整 6.对齐样式调整 7.excel内添加 ...

  9. python excel绘图-利用python在excel中画图的实现方法

    一.前言 以前大学时候,学EXCEL看到N多大神利用excel画图,觉得很不可思议.今个学了一个来月python,膨胀了就想用excel画图.当然,其实用画图这个词不甚严谨,实际上是利用opencv遍 ...

最新文章

  1. 视觉进阶 | 用于图像降噪的卷积自编码器
  2. java错误代码1061_java.sql.SQLException
  3. [OI]Noip 2018 题解总结(普及)
  4. Java锁机制(一)synchronized
  5. django restful 请求_利用 Django REST framework 构建 RESTful Web API
  6. 工作这几年所获、所感、所悟
  7. mysql缺失值处理方法,插值MySQL表中的缺失值
  8. Win7安装 Rational Rose软件
  9. 神经网络入门(详细 )
  10. AdventureWorks 安装和配置[转自 微软msdn]
  11. 用html实现学生考勤系统,学生考勤管理信息系统的设计与实现最终版(样例3)...
  12. linux的pascal语言,pascal语言视频教程 Linux GCC常用命令详解
  13. 因子分析累计贡献率_数据分析之因子分析
  14. STM32开发环境的搭建及使用——STM32CubeMX
  15. 九位皇子对于皇帝的宝座争斗不休,那么是哪九位呢?
  16. 【WinHex篇】WinHex跳过坏扇区制作磁盘镜像
  17. PHP生成订单号算法
  18. 电子元器件篇---三极管
  19. 项目管理PMBOK中各知识领域过程的关系图
  20. VSCode 配置 python环境 相对齐全 有遇到问题欢迎投稿哈

热门文章

  1. Android画图方式
  2. 自动驾驶专题介绍 ———— 动力传动系统
  3. 【SSD-Caffe】安装使用教程
  4. Android 时间格式化
  5. golang:kratos生成proto以及API编写
  6. C语言负整数在内存中的存储
  7. 安卓手机上最好的3个txt阅读器
  8. 视频播放–AVPlayer
  9. BZOJ4480:快乐的jyy(回文自动机)
  10. 十进制12345在32位计算机中的十六进制表示方法