Pandas 批量拆分与合并Excel文件

server/2025/3/6 14:22:09/
  • 将一个大的excel等份拆分成多个excel
  • 将多个小excel合并成一个大excel,并标记来源

import pandas as pdwork_dir = r'C:\TELCEL_MEXICO_BOT\A\Weather.xlsx'
df_source = pd.read_excel(work_dir)
print(df_source.head())ymd bWendu yWendu tianqi fengxiang fengji  aqi aqiInfo  aqiLevel
0 2025-01-01    3°C   -6°C   晴~多云       西北风   1-2级   59       优         2
1 2025-01-02    2°C   -9°C      阴       东南风   3-4级   48       优         1
2 2025-01-03    2°C   -2°C   晴~多云        西风   4-8级   28       良         1
3 2025-01-04    0°C   -4°C   晴~多云        东风   2-5级   30       良         1
4 2025-01-05    3°C   -1°C     小雨        东风   3-5级   25       良         1print(df_source.index)
RangeIndex(start=0, stop=19, step=1)print(df_source.shape)
(19, 9)total_row_count = df_source.shape[0]
print(total_row_count)
19
  1. 使用df.iloc方法,将一个大的dataframe,拆分成多个小的dataframe
  2. 将使用dataframe.to_excel保存每个小excel
  • 计算拆分后的每个excel行数

# 这个大excel,会拆分给下面几个人

work_dir = r'C:\TELCEL_MEXICO_BOT\A\Weather.xlsx'
df_source = pd.read_excel(work_dir)
print(df_source.head())ymd bWendu yWendu tianqi fengxiang fengji  aqi aqiInfo  aqiLevel
0 2025-01-01    3°C   -6°C   晴~多云       西北风   1-2级   59       优         2
1 2025-01-02    2°C   -9°C      阴       东南风   3-4级   48       优         1
2 2025-01-03    2°C   -2°C   晴~多云        西风   4-8级   28       良         1
3 2025-01-04    0°C   -4°C   晴~多云        东风   2-5级   30       良         1
4 2025-01-05    3°C   -1°C     小雨        东风   3-5级   25       良         1total_row_count = df_source.shape[0]
print(total_row_count)
19user_names = ['张飞','刘备','关羽','诸葛亮','曹操','张辽']
# 每个人的任务数目
split_size = total_row_count // len(user_names)
if total_row_count % len(user_names) !=0:split_size +=1print(split_size)
​​​​​​​4拆分成多个dataframedf_subs = []
for idx, user_name in enumerate(user_names):# iloc的开始索引begin = idx * split_size#iloc的结果索引end = begin + split_size#实现df按照iloc拆分df_sub = df_source.iloc[begin:end]#将每个了df存入列表df_subs.append((idx, user_name, df_sub))##将每个dataframe存入excel
for idx, user_name, df_sub in df_subs:file_name = fr'C:\TELCEL_MEXICO_BOT\A\Weather_{idx},{user_name.xlsx}'df_sub.to_excel(file_name,index=False, engine='openpyxl')

二, 合并多个小excel到一个大excel

  •  遍历文件夹,得到要合并的excel文件列表
  • 分别读取到dataframe, 给每个df添加一列用于标记来源
  • 使用pd.concat进行df批量合并
  • 将合并后的dataframe输出到excel
## 直接从DeepSeek上面获取到了代码和详细说明
import os
import pandas as pd# 定义路径
input_folder = r'C:\TELCEL_MEXICO_BOT\A\excel_split_merge'
output_file = os.path.join(input_folder, 'merged_excel.xlsx')# 获取所有 Excel 文件
excel_files = [f for f in os.listdir(input_folder) if f.endswith('.xlsx')]# 检查是否有文件
if not excel_files:print("没有找到 Excel 文件!")
else:# 创建一个空的 DataFrame 用于存储合并后的数据merged_df = pd.DataFrame()# 遍历所有 Excel 文件并合并for file in excel_files:file_path = os.path.join(input_folder, file)# 提取姓名部分try:name = file.split('_')[-1].split('.')[0]  # 提取最后一个下划线后的部分except IndexError:print(f"文件名格式不正确: {file}")continue  # 跳过格式不正确的文件df = pd.read_excel(file_path)  # 读取 Excel 文件df['姓名'] = name  # 添加姓名列merged_df = pd.concat([merged_df, df], ignore_index=True)  # 合并数据# 将合并后的数据保存到新的 Excel 文件merged_df.to_excel(output_file, index=False)print(f"合并完成,文件已保存到: {output_file}")


http://www.ppmy.cn/server/172889.html

相关文章

DeepSeek 隐私泄露?

大家好,我是钢板兽。 最近,一位社科专业的朋友问我:“如果把一些自己研究方向相关的涉密英文材料上传到 DeepSeek,让它帮忙提取文本并翻译,其他用户会不会通过拷打AI或其他方式获取这些材料的内容?”换句话…

快速开始React开发(一)

快速开始React开发(一) React是一个JavaScript库,用于构建交互式网站,并且能够快捷创建SPA(Single Page App),其组件化的思想也是被一再传播,无论是普通的Web网站还是嵌入移动端交互…

Qt中txt文件输出为PDF格式

main.cpp PdfReportGenerator pdfReportGenerator;// 加载中文字体if (QFontDatabase::addApplicationFont(":/new/prefix1/simsun.ttf") -1) {QMessageBox::warning(nullptr, "警告", "无法加载中文字体");}// 解析日志文件QVector<LogEntr…

Rust语言入门与应用:未来发展趋势解析

一、Rust语言核心优势解析 1.1 内存安全革命 rust复制 // 所有权系统示例 fn main() { let s1 String::from("hello"); // s1获得所有权 let s2 s1; // 所有权转移至s2 // println!("{}", s1); // 编译错误&#xff01;s1已失效 println!("{}&quo…

从0开始的操作系统手搓教程21:进程子系统的一个核心功能——简单的进程切换

目录 具体说说我们的简单RR调度 处理时钟中断处理函数 调度器 schedule switch_to 我们下面&#xff0c;就要开始真正的进程切换了。在那之前&#xff0c;笔者想要说的是——我们实现的进程切换简单的无法再简单了——也就是实现一个超级简单的轮询调度器。 每一个进程按照…

windows下Jmeter的安装与使用

一、下载地址 官网地址&#xff1a;Apache JMeter - Download Apache JMeter Binaries&#xff1a;已经编绎好的二进制文件&#xff0c;可直接执行&#xff0c;下载解压后就可以使用。 Source&#xff1a;源代码文件&#xff0c;需要自己编绎才可以执行。 二、环境变量 我看…

npm : 无法加载文件 C:\Program Files\nodejs\npm.ps1,因为在此系统上禁止运行脚本。

1、在 vscode 终端执行 get-ExecutionPolicy 返回 Restricted 状态是禁止的 返回 RemoteSigned 状态是可正常执行npm命令 2、更改状态 set-ExecutionPolicy RemoteSigned 如果提示需要管理员权限&#xff0c;可加参数运行 Set-ExecutionPolicy -Scope CurrentUser RemoteSi…

XMOS推出“免开发固件方案”将数字接口音频应用的开发门槛大幅降低

使用该套“免开发固件方案”可将开发周期从三个月缩短到14天 中国深圳&#xff0c;2025年3月——全球领先的软件定义系统级芯片&#xff08;SoC&#xff09;开发商XMOS宣布&#xff1a;公司已推出了“免开发固件方案”&#xff0c;可实现中高端音频解决方案的0代码开发。与传统…