当前位置: 首页 > news >正文

python 多个excel合并

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.rkmt.cn/news/44646.html

相关文章:

  • U629961 焦头烂额的日奈委员长 の markdown
  • 使用Milvus和DeepSeek构建RAG demo - 实践
  • 如何写毕业论文?10个高效写作技巧+AI论文工具推荐(2025最新)
  • 二 C#工程化部署Yolo - 详解
  • MATLAB 实现 SRCNN 图像超分辨率重建
  • Java-148 深入浅出 MongoDB 聚合操控:$match、$group、$project、$sort 全面解析 Pipeline 实例详解与性能优化
  • 深入解析:vscode-cpptools调试器扩展:监视表达式高级功能
  • 人工势场法(APF)路径规划 MATLAB
  • MySQL--多表查询
  • 哈佛放屁都是香的?
  • 深入解析:李宏毅2025春季机器学习作业ML2025_Spring_HW4在kaggle上的实操笔记
  • 完整教程:PostgreSQL + Redis + Elasticsearch 实时同步方案实践:从触发器到高性能搜索
  • 基于最小二乘法的五颗可见卫星伪距定位
  • new day
  • 2025 年 11 月冰水机厂家推荐排行榜,工业冰水机,冷却冰水机,制冷冰水机,低温冰水机公司精选
  • 完整教程:用 Java 指挥 3500 只机器人跳舞——Ocado 高密度仓储集群的架构实践
  • new day
  • How to do PhD work
  • 关于计算机语言的学习
  • VisionPro学习笔记-CogColorExtractorTool和CogColorSegmenterTool
  • CSP挂分记
  • 深入解析:51单片机基础-动态数码管显示
  • Ubuntu 22.04 的镜像源列表
  • 关于梅特勒-托利多 称重传感器检查
  • 局域网---传输文件资料信息
  • 从C++到wasm,并在JavaScript中调用
  • 详细介绍:计算某字符出现次数
  • 2026 NOI 做题记录(九)
  • 实用指南:C++STL---静态数组array
  • MCP神器!一键部署连接任何MCP服务器