【Python如何将EXCEL拆分】

文章目录

Python将一个EXCEL表拆分多个excel表

在Python中,你可以使用pandas库来读取Excel文件,并将一个大的Excel表格(工作表)拆分成多个单独的Excel文件。这通常基于某些条件,比如基于某列的唯一值或者按照行数的固定分割。

以下是一个基于某列唯一值来拆分Excel工作表的示例:

  1. 首先,你需要安装pandasopenpyxl(用于读写Excel文件):
bash 复制代码
pip install pandas openpyxl
  1. 使用Python脚本拆分Excel文件:
python 复制代码
import pandas as pd

# 读取原始Excel文件
original_file = 'original.xlsx'
sheet_name = 'Sheet1'  # 假设你要拆分的工作表名称是'Sheet1'
df = pd.read_excel(original_file, sheet_name=sheet_name)

# 选择你要根据哪一列的唯一值来拆分工作表
split_column = 'column_to_split_by'  # 替换为你的列名
unique_values = df[split_column].unique()

# 遍历唯一值并保存每个子DataFrame到新的Excel文件
for value in unique_values:
    # 筛选数据
    sub_df = df[df[split_column] == value]
    
    # 构造新的文件名
    new_file = f'split_{value}.xlsx'
    
    # 写入新的Excel文件
    with pd.ExcelWriter(new_file, engine='openpyxl') as writer:
        sub_df.to_excel(writer, index=False, sheet_name=sheet_name)

print(f'Split into {len(unique_values)} files.')

在这个示例中,split_column是你希望根据其唯一值来拆分工作表的列的名称。unique_values是一个包含该列所有唯一值的列表。然后,脚本遍历这些唯一值,对于每个唯一值,它筛选出原始DataFrame中对应的行,并将这些行保存到一个新的Excel文件中。

请注意,这个示例假设你的原始Excel文件使用的是.xlsx格式,并且你希望保存拆分后的文件也为.xlsx格式。此外,如果你需要拆分的工作表不是第一个工作表(即不是'Sheet1'),你需要将sheet_name变量的值更改为正确的工作表名称。

如果你想要按照行数的固定分割来拆分工作表(例如,每100行一个文件),你可以稍微修改上面的脚本,使用range(0, len(df), 100)来迭代行索引,并使用.iloc来切片DataFrame。

Python将一个EXCEL表中一个sheet拆分多个sheet表

可以使用pandas结合openpyxlxlsxwriter来实现。但是,由于pandasExcelWriter在写入时不支持在同一个Excel文件中添加多个工作表(除非你一次写入所有工作表),需要使用openpyxlxlsxwriter来手动操作Excel文件。

以下是一个使用pandasopenpyxl来拆分一个工作表到多个工作表的示例:

python 复制代码
import pandas as pd
from openpyxl import load_workbook

# 读取原始Excel文件
original_file = 'original.xlsx'
sheet_name_to_split = 'Sheet1'  # 要拆分的工作表名称

# 使用pandas读取工作表
df = pd.read_excel(original_file, sheet_name=sheet_name_to_split)

# 假设你根据某列的值(例如'group_column')来拆分工作表
# 也可以根据需要使用其他逻辑,比如按行数拆分
groups = df['group_column'].unique()

# 加载已存在的Excel文件以添加新的工作表
book = load_workbook(original_file)
writer = pd.ExcelWriter(original_file, engine='openpyxl') 
writer.book = book

# 遍历每个组并将数据写入新的工作表
for group in groups:
    # 筛选数据
    sub_df = df[df['group_column'] == group]
    
    # 写入新的工作表,如果工作表已存在则先删除
    if group in book.sheetnames:
        book.remove(book[group])
    sub_df.to_excel(writer, sheet_name=group, index=False)

# 保存Excel文件
writer.save()

在这个示例中,我们首先加载了原始的Excel文件,并使用pandas读取了要拆分的工作表。然后,我们根据某个列的唯一值将数据拆分成多个DataFrame。接下来,我们使用openpyxl加载原始的Excel工作簿,并遍历每个组。对于每个组,我们检查是否存在同名的工作表,如果存在则删除它,然后将筛选后的数据写入新的工作表。最后,我们保存了修改后的Excel文件。

请注意,这个示例会直接修改原始的Excel文件。如果你不希望修改原始文件,你可以将结果保存到一个新的Excel文件中。此外,如果你的数据量很大,或者拆分后的工作表很多,这个操作可能会比较耗时,因为它需要在内存中处理整个Excel文件。

相关推荐
Joseph 乔4 小时前
【Python】卸载与重装
经验分享·python
归去来?4 小时前
Python 常用优雅写法
开发语言·python
名字还没想好☜4 小时前
Java 21 switch 模式匹配实战:sealed 接口 + record 替代 if-instanceof 链
java·人工智能·后端·python·spring
深蓝海拓4 小时前
基于QtPy (PySide6) 的PLC-HMI工程实战记录(五)为当前动作画面的信号连接变量
网络·笔记·python·学习·pyqt
devilnumber4 小时前
Java 30 组高频技术 / 知识点多角度对比
java·开发语言
何以解忧,唯有..4 小时前
Python 异常处理完全指南:从基础到高级实践
开发语言·前端·python
DLYSB_4 小时前
让 PLC“开口说话”:基于 Modbus TCP 的声光语音告警设计与 Python 调试
python·网络协议·tcp/ip·报警灯
今日热点4 小时前
微信小程序主体变更公证全流程实操解析:场景条件、材料规范、驳回避坑与Python校验脚本实现
python·微信小程序·小程序
O。O蛋黄酥啊5 小时前
GraphRAG 和 LightRAG 详解与对比
人工智能·python·算法·rag·graphrag·lightrag
Buke..5 小时前
【小程序逆向】某游快爆 AI 逆向 sign参数:AI 辅助分析与 MCP 工具链实战
前端·人工智能·爬虫·python·小程序·notepad++