Python将Excel表格按某列拆分为多个sheet实现过程

作者:Victor 时间:2021-06-11 06:59:54 

实际数据分析中遇到需求,把某个Excel表格按照某一列分为多个sheet,并且要求如果某个key对应的行数较少应该合并到一个sheet中。

import pandas as pd
import bioquest as bq # https://jihulab.com/BioQuest/bioquest

演示

从网上找随便了个数据做演示用

input_file=r"https://gitee.com/zhjx19/chaoyanghospital/raw/master/%E6%9C%9D%E9%98%B3%E5%8C%BB%E9%99%A22018%E5%B9%B4%E9%94%80%E5%94%AE%E6%95%B0%E6%8D%AE.xlsx"
output_file=r"朝阳医院.xlsx"
key='商品名称'

读如数据,删除商品名称为na的行

data = pd.read_excel(input_file)
data.dropna(subset=key,inplace=True)

替换/,删除特殊字符(因为不能作为sheetname)

data.loc[:,key] = bq.st.replaces(string=data.loc[:,key],pattern=r"/",repl="每")
data.loc[:,key] = bq.st.replaces(string=data.loc[:,key],pattern=r"[\\*?:/\[\]]",repl="")

如果某个key对应的行数少于50则合并在合并的药物这个sheet中,其他的key单独存在对应的sheet中

keys=data.loc[:,key].unique().tolist()
few_dict = {}
single_dict = {}
for i in keys:
   data_sub = data.groupby(key).get_group(i)
   if data_sub.shape[0]<50:
       few_dict[i] = data_sub
   else:
       single_dict[i] = data_sub

合并sheet

第一次写出合并的药物sheet

few = pd.concat(few_dict,ignore_index=True)
few.to_excel(output_file, sheet_name="合并的药物", index=False)

循环append sheet,最后close

writer = pd.ExcelWriter(output_file, engine='openpyxl',mode="a")
for k,v in single_dict.items():
   v.to_excel(writer, sheet_name=f"{k}", index=False)
writer.close()

来源:https://segmentfault.com/a/1190000043824695

标签:Python,Excel,拆分,sheet
0
投稿

猜你喜欢

  • 使用Python文件读写,自定义分隔符(custom delimiter)

    2021-12-06 08:17:51
  • JavaScript caller与callee属性

    2009-01-19 13:39:00
  • Pytorch中的gather使用方法

    2021-11-22 06:11:49
  • golang:json 反序列化的[]和nil操作

    2024-04-26 17:19:24
  • python2和python3在处理字符串上的区别详解

    2021-10-07 03:29:31
  • 利用python爬取有道词典的方法

    2021-07-08 04:42:05
  • python计算n的阶乘的方法代码

    2023-08-20 07:33:00
  • 详解python中的异常捕获

    2021-11-21 00:52:20
  • js类的继承定义与用法分析

    2024-04-22 22:34:07
  • vue+axios+java实现文件上传功能

    2024-04-30 10:40:32
  • win10下安装两个MySQL5.6.35数据库

    2024-01-16 00:50:07
  • C#实现复制数据库 C#将A数据库数据转到B数据库

    2024-01-23 11:56:09
  • ORACLE 最大连接数的问题

    2009-07-23 14:27:00
  • MySQL授权命令grant的使用方法小结

    2024-01-22 14:09:22
  • python生成随机红包的实例写法

    2021-02-20 12:30:33
  • 使用PHP 5.0创建图形的巧妙方法

    2023-10-27 00:59:07
  • Python实现二叉树的最小深度的两种方法

    2022-05-24 03:30:17
  • PyQt+socket实现远程操作服务器的方法示例

    2022-07-19 01:56:13
  • Python 冒泡,选择,插入排序使用实例

    2021-11-24 21:42:35
  • jquery eval解析JSON中的注意点介绍

    2024-04-19 10:01:07
  • asp之家 网络编程 m.aspxhome.com