python 多个excel合并

news/2025/11/9 16:17:13/文章来源:https://www.cnblogs.com/shirleysu90/p/19204411

excel是这样的

image

 多个这样的合并

import pandas as pd
import os
import globdef merge_excel_files_with_source(input_folder, output_file):"""批量合并Excel文件,并添加来源文件列Parameters:input_folder (str): 包含Excel文件的文件夹路径output_file (str): 输出的合并CSV文件路径"""# 查找所有的Excel文件excel_patterns = [os.path.join(input_folder, "*.xlsx"),os.path.join(input_folder, "*.xls")]excel_files = []for pattern in excel_patterns:excel_files.extend(glob.glob(pattern))# 排除输出文件本身if os.path.abspath(output_file) in [os.path.abspath(f) for f in excel_files]:excel_files = [f for f in excel_files if os.path.abspath(f) != os.path.abspath(output_file)]if not excel_files:print(f"在文件夹 {input_folder} 中未找到任何Excel文件")returnprint(f"找到 {len(excel_files)} 个Excel文件")print("开始合并...")# 存储所有数据的列表all_data = []# 读取每个Excel文件for i, excel_file in enumerate(excel_files, 1):try:print(f"正在读取: {os.path.basename(excel_file)} ({i}/{len(excel_files)})")# 读取Excel文件df = pd.read_excel(excel_file)# 检查是否包含必要的列required_columns = ['ID', 'Row', 'Col', 'SWT']if not all(col in df.columns for col in required_columns):print(f"  警告: 文件 {os.path.basename(excel_file)} 缺少必要的列,跳过")continue# 添加来源文件列df['Source_File'] = os.path.basename(excel_file)# 跳过表头(除了第一个文件)if all_data:# 对于后续文件,直接添加数据行(跳过第一行表头)all_data.append(df.iloc[1:] if len(df) > 1 else df)else:# 对于第一个文件,包含表头
                all_data.append(df)except Exception as e:print(f"  读取文件 {os.path.basename(excel_file)} 时出错: {str(e)}")continueif not all_data:print("没有成功读取任何Excel文件")return# 合并所有数据try:merged_df = pd.concat(all_data, ignore_index=True)# 保存合并后的文件为CSVmerged_df.to_csv(output_file, index=False, encoding='utf-8-sig')print(f"\n合并完成!")print(f"总共合并了 {len(merged_df)} 行数据")print(f"合并后的文件已保存至: {output_file}")# 显示合并后的数据信息print(f"\n合并后的数据信息:")print(f"列名: {list(merged_df.columns)}")print(f"数据形状: {merged_df.shape}")print(f"前5行数据预览:")print(merged_df.head())except Exception as e:print(f"合并数据时出错: {str(e)}")# 使用示例
if __name__ == "__main__":# 带来源文件信息的合并input_folder = "E:/precipiation_daytime/miniblock/SWT"  # 替换为你的Excel文件所在文件夹output_file = "E:/precipiation_daytime/miniblock/one/SWT_merged.csv"  # 合并后的输出CSV文件路径print("开始合并Excel文件...")merge_excel_files_with_source(input_folder, output_file)

 

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

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

相关文章

详细介绍:15:00开始面试,15:06就出来了,问的问题有点变态。。。

详细介绍:15:00开始面试,15:06就出来了,问的问题有点变态。。。pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: &qu…

计算机毕业设计-基于Java的口腔管理平台系统创建实战(附源码+论文+演示视频)

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

唯识主义:哲学爱智慧本质的当代回归 - 实践

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

第一届湖南省信息学拔尖创新挑战活动 总结

\(100+85+40+40=265\)。 拜谢 T4 放水了暴力多给了 \(20\)。可恶 T2 没给初值为极负值而痛失 \(15\)。愤恨 T3 没想到记搜错过正解。 我是 fw,我叫 fw! Pro.A 简单题,对怪兽的战斗力从小到大排序,按着这个顺序来打…

U629961 焦头烂额的日奈委员长 の markdown

U629961 焦头烂额的日奈委员长 题目背景 由于美食研究部的众人绑架了枫香,所以今天的歌赫娜由朱莉提供。 但是由于某些众所周知的原因,今天的午饭不仅无法正常开饭,为师的大可爱还需要处理这些活蹦乱跳冒着绿色粘液…

Java数组——Array类讲解

Java数组——Array类讲解Array工具类 数组的工具类java.util.Arrays 数组对象本身供调用的方法少,但API提供了一个工具类Arras供于使用,从而对数据对象进行一些基本操作 查看JDK帮助文档 Arrays类中方法都是用static…

论文笔记(九十三)ManipulationNet: Benchmarking - 实践

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

flask: 用flask-wtf校验参数

一,安装第三方库 $ pip3 install flask-wtf 二,例子 # validator from flask_wtf import FlaskForm import wtforms from wtforms import validators from wtforms.fields import StringField, TextAreaField, Integ…

序列密码的线性滤波模型

线性滤波模型的可攻击性分析 1. 线性滤波模型若 \(g(x)\) 是线性函数,即: \(d_i = a \cdot S^{(i)} = a_{L-1}s_{L-1}^{(i)} \oplus \cdots \oplus a_0 s_0^{(i)}\) 状态转移由矩阵 \(A\) 描述: \(S^{(i)} = A^i \c…

使用Milvus和DeepSeek构建RAG demo - 实践

使用Milvus和DeepSeek构建RAG demo - 实践2025-11-09 15:50 tlnshuju 阅读(0) 评论(0) 收藏 举报pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: bloc…

python里字面量是什么?

在 Python 里,字面量(literal)就是“写在源码里、解释器一看就能直接算出值”的常量写法,不需要再经过变量查找或函数调用。 常见几类:类型 字面量示例 说明数字 42 -3.14 0xFF 1_000_000 3+4j 整型、浮点、十六进…

圆锥滚子轴承品牌:行业顶尖选择与专业解析

副标题:深入探讨2025年市场趋势与用户痛点解决方案 摘要 圆锥滚子轴承行业在2025年持续增长,受益于汽车、工程机械等领域的强劲需求,技术创新和高质量交付成为竞争核心。本文基于行业数据和分析,为您呈现前十名品牌…

串串重学

对于现在大部分的博客对于字符串串的说明看了一下,实在是硬套理论,定义,不能有一个如何而来的推导过程,无法深刻理解到自动机与 fail 指针的本质。 所以尝试自己写一写,但是我是鸽王 qwq 不一定按难度排序,可以看…

如何写毕业论文?10个高效写作技巧+AI论文工具推荐(2025最新)

撰写学术论文常让人无从下手,本文提供10个高效写作技巧及实用AI工具PaperNex。技巧包括明确研究主题目标、深入文献综述、制定大纲等。如明确研究问题和目标,借助学术数据库查阅文献,用AI生成大纲等。还推荐了Paper…

avro 数据入门

avro 数据入门1.概述 Apache Avro 是一种 开源的、语言无关的、基于行的(row-based)数据序列化格式,由 Hadoop 项目开发,广泛用于大数据生态系统(如 Kafka、Spark、Flink、Hive 等)中,用于高效存储和传输结构化…

Day 21

算法复习日:把“似懂非懂”的逻辑磨到通透 原本以为算法复习就是再刷几道题,可坐在电脑前打开之前的笔记才发现,很多算法只是“会写代码”,却没吃透底层逻辑——今天特意放慢节奏,对着二分查找、快速排序这两个“…

2025龙信杯个人Wp

服务器基本没做,时间太赶了www 一、 手机镜像检材 (共24题) 1.​ 分析手机镜像,请问机身的Wi-Fi 信号源的物理地址是什么?[标准格式:01:02:03:04:05:06] 00:db:60:6e:86:132.​ 分析手机镜像,请问张大的手机号码尾…

7大AI论文写作工具必备!论文写作辅助神器推荐!

临近毕业季,写毕业论文让不少人痛苦不堪。2025 年 AI 技术飞跃,成为学生的“学术神器”。作者亲自试用全网热门的 7 个 AI 写作工具,其中瑞达写作表现出色。文章详细介绍了包括瑞达写作、QuillBot、图灵论文 AI 写作…

二 C#工程化部署Yolo - 详解

二 C#工程化部署Yolo - 详解pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco",…