python拆分Excel文件

news2025/1/16 18:55:38

按Sheet拆分Excel 或 按照某一列的不同值拆分Excel。文档样式如下:
在这里插入图片描述
结果:红色是按照Sheet名拆出的,蓝色和橙色是某个Sheet按照某列的不同值拆分的。
在这里插入图片描述

代码:

# -*- coding: utf-8 -*-
"""
拆分excel文件——按照sheet个数拆分 或者 按照列值拆分
"""

import pandas as pd 
import os


def split_excel_by_sheet(file_path1):

    # 获取文件名称
    file_name = os.path.basename(file_path1)
    # 获取文件大小
    file_size = os.path.getsize(file_path1)
    # 文件名和扩展类型分别获取
    file_name_1, file_extension = os.path.splitext(os.path.basename(file_path1))
    # 获取excel的sheet名
    org_excel = pd.ExcelFile(file_path1)
    
    print('文件全称:', file_name,';大小: ',file_size ,'字节')
    print('文件名称:', file_name_1, ';文件类型:', file_extension)
    print('所含sheet', org_excel.sheet_names)
    
    # 按照sheet拆分
    # 遍历sheet
    for sheet_name in org_excel.sheet_names:
        # 读取每个sheet后,单独保存
        df = pd.read_excel(org_excel, sheet_name) # dtype='str' 可以避免过长的数值被转为科学计数法
        # 在当前路径下,使用原文件名和sheet名 重新命名新文件
        df.to_excel('.\\' + file_name_1 + '_' + sheet_name + '.xlsx', index=None)
    print('split_excel_by_sheet is OK')
    


def split_excel_by_part(file_path1):
    
    # 获取文件名称
    file_name = os.path.basename(file_path1)
    # 获取文件大小
    file_size = os.path.getsize(file_path1)
    # 文件名和扩展类型分别获取
    file_name_1, file_extension = os.path.splitext(os.path.basename(file_path1))
    # 获取excel的sheet名
    org_excel = pd.ExcelFile(file_path1)
    
    print('文件全称:', file_name,';大小: ',file_size ,'字节')
    print('文件名称:', file_name_1, ';文件类型:', file_extension)
    print('所含sheet', org_excel.sheet_names)
    
    
    sheet_name = input("请输入要拆分的sheet名:")
    
    # 检测sheet名称
    if sheet_name in org_excel.sheet_names:
        
        print('将拆分', file_name,'的', sheet_name, '内容')
        # 读取sheet_name内容
        df1 = pd.read_excel(file_path1, sheet_name)
        # 获取其列名
        print('包含的列为' , df1.columns.tolist())
        
        by_column_name = input("请输入要根据哪个列拆分:")
        
        # 检测列名称
        if by_column_name in df1.columns.tolist():
            print('按照',by_column_name,'列拆分,提示:')
            # 查看by_column_name列的内容值
            by_column_name_values = df1[by_column_name].unique()
            print(by_column_name,'列中值包含',by_column_name_values,'。同一值单独拆分成一个文件')
            
            # 使用groupby方法根据'lesson'的值拆分DataFrame
            grouped = df1.groupby(by_column_name)
            # 现在grouped是一个GroupBy对象,可以迭代它来访问每个组
            for key, group in grouped:
                print(f"Group with key: {key}")
                print(group)
                
                # 按照lesson列的不同值单独存一个文件
                group.to_excel('.\\' + file_name_1 + '_' + sheet_name + '_' + key +'.xlsx', index=None)
            print('Finish!')
            
        else :
            print('输入的',by_column_name,'?!没有叫这个名的列!')
        
    else :
        print('输入的',sheet_name,',此sheet名称不存在!')
        




if __name__ == '__main__':
    
    # 文件地址
    file_path1 = '.\excel数据拆分.xlsx'

    # 按照sheet拆
    # split_excel_by_sheet(file_path1) # 按照sheet进行拆分
    
    # 按照部分分
    split_excel_by_part(file_path1)
    
    
    
    
    

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2256546.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

存内架构IR-DROP问题详解-电容电导补偿

一、总述 电容、电导补偿作为大规模数字电路的关键设计理念,是 CIM 架构优化的核心技术。在 CIM 中,平衡电容或电导并实现计算的精准映射,对能效提升和计算精度保障具有关键作用。本文基于近期文献探讨电容、电导补偿在 CIM 中的具体补偿策…

汽车网络安全 -- IDPS如何帮助OEM保证车辆全生命周期的信息安全

目录 1.强标的另一层解读 2.什么是IDPS 2.1 IDPS技术要点 2.2 车辆IDPS系统示例 3.车辆纵深防御架构 4.小结 1.强标的另一层解读 在最近发布的国家汽车安全强标《GB 44495》,在7.2节明确提出了12条关于通信安全的要求,分别涉及到车辆与车辆制造商云平台通信、车辆与车辆…

【数字化】华为企业数字化转型-认知篇

导读:企业数字化转型的必要性在于,它能够帮助企业适应数字化时代的需求,提升运营效率,创新业务模式,增强客户互动,从而在激烈的市场竞争中保持领先地位并实现可持续发展。通过学习华为企业数字化转型相关理…

用C#开发程序进行ASCII艺术制作

我一直很喜欢 ASCII 艺术,而我对制作 ASCII 艺术的热情促使我探索 .NET 框架中的 GDI。在本文中, 我将向您展示如何通过三个简单的步骤从 JPEG/Bitmap 图像生成 ASCII 艺术。 1、加载并调整图像大小。 2、读取每个像素,获取其颜色并将其转换…

第23周:机器学习及文献阅读

目录 摘要 Abstract 一、理论知识 1、逻辑提升 2、分类任务 3、10倍交叉验证法 二、文献阅读 1、模型方法——MLT (1)特征选择 (2)决策树剪枝 2、分类任务——逻辑回归 3、实验部分 数据集的选取 代码实践 模型…

2020年国赛高教杯数学建模E题校园供水系统智能管理解题全过程文档及程序

2020年国赛高教杯数学建模 E题 校园供水系统智能管理 原题再现 校园供水系统是校园公用设施的重要组成部分,学校为了保障校园供水系统的正常运行需要投入大量的人力、物力和财力。随着科学技术的发展,校园内已经普遍使用了智能水表,从而可以…

React开发高级篇 - React Hooks以及自定义Hooks实现思路

Hooks介绍 Hooks是react16.8以后新增的钩子API; 目的:增加代码的可复用性,逻辑性,弥补无状态组件没有生命周期,没有数据管理状态state的缺陷。 为什么要使用Hooks? 开发友好,可扩展性强&#…

摩尔线程 国产显卡 MUSA 并行编程 学习笔记-2024/12/03

Learning Roadmap: Section 1: Intro to Parallel Programming & MUSA Deep Learning Ecosystem(摩尔线程 国产显卡 MUSA 并行编程 学习笔记-2024/11/30-CSDN博客)UbuntuDriverToolkitcondapytorchtorch_musa环境安装(2024/11/24-Ubunt…

如何使用Docker轻松搭建高颜值无广告音乐播放器SPlayer随时随地听歌

前言 在快节奏的生活环境中,音乐成为了许多人放松和享受的重要方式。本文将介绍如何在Linux Ubuntu系统中使用Docker快速部署一款高颜值无广告的某抑云音乐播放器——SPlayer,并结合Cpolar内网穿透工具实现出门在外也能远程访问本地服务,随时…

C# Decimal

文章目录 前言1. Decimal 的基本特性2. 基本用法示例3. 特殊值与转换4. 数学运算示例5. 精度处理示例6. 比较操作示例7. 货币计算示例8. Decimal 的保留小数位数9. 处理 Decimal 的溢出和下溢10. 避免浮点数计算误差总结 前言 decimal 是 C# 中一种用于表示高精度十进制数的关键…

【理论·专业课】第三次作业

第1题(存储管理_内存碎片) 请指出内部碎片与外部碎片的区别。 ANS: 内部碎片是分配给进程但未被进程使用且无法被其他进程利用的内存空间 外部碎片是内存中因进程分配释放内存形成的不连续小块,虽总和够但因不连续无…

最新的springboot 3.x的支持s3协议的2.x方法的minio上传文件方法

拉取镜像 docker pull registry.cn-hangzhou.aliyuncs.com/qiluo-images/minio:latest运行命令 docker run -d \--name minio \-p 10087:9000 \-p 10088:9001 \-e MINIO_ROOT_USERminioadmin \-e MINIO_ROOT_PASSWORDY6HYraaphfZ9k8Lv \-v /data/minio/data:/data \-v /data/…

cocos creator接入字节跳动抖音小游戏JSAPI敏感词检测(进行文字输入,但输入敏感词后没有替换为*号)

今天更新了某个抖音小游戏的版本,增加了部分剧情,半天过后一条短信审核未通过,emmm…抖音总是能给开发者惊喜…打开电脑看看这次又整什么幺蛾子… 首先是一脸懵逼,后端早已接入了官方的内容安全检测能力了(https://de…

Origin快速拟合荧光寿命、PL Decay (TRPL)数据分析处理-方法二

1.先导入数据到origin 2.导入文件的时候注意:名字短的这个是,或者你打开后看哪个里面有800,因为我的激光重频是1.25Hz(应该是,不太确定单位是KHz还是MHz),所以对应的时间是800s。 3.选中两列直接…

17. 面向对象的特征

一、面向对象的三大特征 面向对象的三大特征指的是 封装、继承、多态。 封装(encapsulation,有时称为数据隐藏)是处理对象的一个重要概念。从形式上看,封装就是将数据和行为组合在一个包中,并对对象的使用者隐藏具体的…

Apache Dolphinscheduler可视化 DAG 工作流任务调度系统

Apache Dolphinscheduler 关于 一个分布式易扩展的可视化 DAG 工作流任务调度系统。致力于解决数据处理流程中错综复杂的依赖关系,使调度系统在数据处理流程中开箱即用。 DolphinScheduler 的主要特性如下: 易于部署,提供四种部署方式&am…

第二部分:基础知识 6.函数 --[JavaScript 新手村:开启编程之旅的第一步]

JavaScript 函数是可重用的代码块,用于执行特定任务。函数可以接受参数(输入数据),并且可以返回一个值。JavaScript 提供了多种定义函数的方式,下面将详细介绍这些方式,并给出一些示例。 1. 函数声明 下面…

我眼中的“懂重构”(一)

初识重构 2017年的时候,领导让我看公司的一本书《重构——改善代码的既有设计》,这是一本JAVA版本的,前后看了2遍。那时候看书因为不懂看的格外仔细。我只是那时候不懂,然而多年后的今天我仍然发现很多人对重构充满误解。在刚进入…

机器学习详解(3):线性回归之代码详解

文章目录 1 数据预处理2 构建线性回归模型并绘制回归线初始化方法前向传播:forward_propagation代价函数:cost_function反向传播:backward_propagation参数更新:update_parameters训练方法:train代码运行结果 3 使用Py…

基于openzeppelin插件的智能合约升级

一、作用以及优点 部署可升级合约,插件自动部署proxy和proxyAdmin合约,帮助管理合约升级和交互;升级已部署合约,通过插件快速升级合约,脚本开发方便快捷;管理代理管理员的权限,只有proxyAdmin的…