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

基于Python读取多个excel竖向拼接为一个excel

在Python中,可以使用pandas库结合glob模块来遍历读取多个Excel文件,并将它们竖向拼接为一个DataFrame对象。以下是完整的实现方法:

文章目录

  • 方法1:使用`glob`匹配文件 + `pd.concat()`
  • 方法2:使用列表推导式(更简洁)
  • 方法3:处理多个Sheet的情况
  • 高级用法:添加文件来源列
  • 注意事项
  • 完整示例(推荐)

方法1:使用glob匹配文件 + pd.concat()

import pandas as pd
import glob# 1. 获取所有Excel文件路径(支持.xlsx和.xls)
excel_files = glob.glob('*.xlsx') + glob.glob('*.xls')  # 当前目录下所有Excel文件
# 或者指定路径:glob.glob('/path/to/files/*.xlsx')# 2. 读取并拼接所有Excel文件
dfs = []
for file in excel_files:df = pd.read_excel(file)  # 可以添加参数如sheet_name='Sheet1'dfs.append(df)# 3. 竖向拼接所有DataFrame
result = pd.concat(dfs, ignore_index=True)# 4. 查看结果
print(result)# 保存为一个xlsx
result.to_excel('汇总.xlsx')

方法2:使用列表推导式(更简洁)

import pandas as pd
import glob# 读取并拼接所有Excel文件
result = pd.concat([pd.read_excel(f) for f in glob.glob('*.xlsx') + glob.glob('*.xls')
], ignore_index=True)print(result)
# 保存为一个xlsx
result.to_excel('汇总.xlsx')

方法3:处理多个Sheet的情况

如果需要读取每个Excel文件的多个Sheet:

import pandas as pd
import globdfs = []
for file in glob.glob('*.xlsx'):# 获取所有Sheet名称sheets = pd.ExcelFile(file).sheet_namesfor sheet in sheets:df = pd.read_excel(file, sheet_name=sheet)dfs.append(df)result = pd.concat(dfs, ignore_index=True)
# 保存为一个xlsx
result.to_excel('汇总.xlsx')

高级用法:添加文件来源列

如果需要知道每行数据来自哪个文件:

dfs = []
for file in glob.glob('*.xlsx'):df = pd.read_excel(file)df['source_file'] = file  # 添加来源文件列dfs.append(df)result = pd.concat(dfs, ignore_index=True)
# 保存为一个xlsx
result.to_excel('汇总.xlsx')

注意事项

  1. 内存管理:如果文件很大或很多,建议分批处理或使用chunksize参数
  2. 列一致性:确保所有Excel文件的列结构相同,否则拼接后会出现很多NaN值
  3. 性能优化:对于大量文件,可以使用tqdm显示进度条:
    from tqdm import tqdm
    dfs = []
    for file in tqdm(glob.glob('*.xlsx')):dfs.append(pd.read_excel(file))
    result = pd.concat(dfs, ignore_index=True)# 保存为一个xlsxresult.to_excel('汇总.xlsx')
    
  4. 异常处理:添加try-except块处理损坏的文件
    dfs = []
    for file in glob.glob('*.xlsx'):try:dfs.append(pd.read_excel(file))except Exception as e:print(f"Error reading {file}: {str(e)}")
    

完整示例(推荐)

import pandas as pd
import globdef read_and_concat_excels(pattern='*.xlsx', sheet_name=0, add_source=False):"""读取并拼接多个Excel文件参数:pattern: 文件匹配模式 (如 'data/*.xlsx')sheet_name: 要读取的Sheet名称或索引add_source: 是否添加来源文件列返回:拼接后的DataFrame"""dfs = []for file in glob.glob(pattern):try:df = pd.read_excel(file, sheet_name=sheet_name)if add_source:df['source_file'] = filedfs.append(df)except Exception as e:print(f"跳过文件 {file}: {str(e)}")if not dfs:raise ValueError("没有找到可读取的Excel文件")return pd.concat(dfs, ignore_index=True)# 使用示例
combined_df = read_and_concat_excels(pattern='input_files/*.xlsx', add_source=True)
combined_df.to_excel('汇总.xlsx', index=False)

这种方法既健壮又灵活,可以处理大多数Excel文件拼接的场景。


文章转载自:

http://vsOP2kcX.fwzjs.cn
http://LNaoUeRx.fwzjs.cn
http://jG3dTZLd.fwzjs.cn
http://0fjrqRMR.fwzjs.cn
http://WbmGbKdw.fwzjs.cn
http://trf1iLkR.fwzjs.cn
http://ZcZDzhDq.fwzjs.cn
http://IqwqjJ2L.fwzjs.cn
http://2DeJEPtL.fwzjs.cn
http://7Gtc3YLQ.fwzjs.cn
http://JU0Zwg13.fwzjs.cn
http://fi1B1Kcd.fwzjs.cn
http://RZlLAZ0a.fwzjs.cn
http://iN8wXgi9.fwzjs.cn
http://upb3fe8G.fwzjs.cn
http://SGRyQDAv.fwzjs.cn
http://9vhqBC6D.fwzjs.cn
http://OJQ0tCdq.fwzjs.cn
http://6iA3mcXP.fwzjs.cn
http://RmZrBne7.fwzjs.cn
http://mmALiaEv.fwzjs.cn
http://pulj5iZS.fwzjs.cn
http://VqvWDzu1.fwzjs.cn
http://KZpPaT7E.fwzjs.cn
http://wiJvTTiz.fwzjs.cn
http://hXlCX9qB.fwzjs.cn
http://SLOYzt30.fwzjs.cn
http://VC8crSWw.fwzjs.cn
http://sy9bJ6Px.fwzjs.cn
http://PT9qQjfA.fwzjs.cn
http://www.dtcms.com/a/368790.html

相关文章:

  • 深入解析汇编语言的奥秘
  • C++语言程序设计——06 字符串
  • 十二、软件系统分析与设计
  • flink 伪代码
  • AGENTS.md: AI编码代理的开放标准
  • 代码可读性的详细入门
  • 单元测试:Jest 与 Electron 的结合
  • 02-Media-5-mp4demuxer.py 从MP4文件中提取视频和音频流的示例
  • K8s访问控制(一)
  • 动物专家?单词测试!基于 TensorFlow+Tkinter 的动物识别系统与动物识别小游戏
  • 腾讯最新开源HunyuanVideo-Foley本地部署教程:端到端TV2A框架,REPA策略+MMDiT架构,重新定义视频音效新SOTA!
  • GD32入门到实战33--用单片机内部FLASH保护产品参数
  • Python的RSS/Atom源解析库feedparser
  • 抓虫:loongarch64架构selinux强防开启程序执行报错execmod
  • 酷柚易汛ERP 2025-09-05系统升级日志
  • STM32——WDG看门狗
  • Redis 发布订阅:社区的 “通知栏与分类订阅” 系统
  • WordPress性能优化全攻略:从插件实战到系统级优化
  • [新启航]激光频率梳 3D 轮廓测量 - 蓝光机械 3D 扫描的工作原理及优缺点
  • 3DEXPERIENCE平台五大实用技巧指南
  • 彻底搞懂深度学习-模型压缩(减枝、量化、知识蒸馏)
  • 概率论第二讲——一维随机变量及其分布
  • ChartGPT深度体验:AI图表生成工具如何高效实现数据可视化与图表美化?
  • 【AndroidStudio】官网下载免安装版,AndroidStudio压缩版的配置和使用
  • Android Activity的启动流程
  • 将 Android 设备的所有系统日志(包括内核日志、系统服务日志等)完整拷贝到 Windows 本地
  • NGUI--三大基础控件
  • 服务器IP暴露被攻击了怎么办?
  • Transformer实战——使用 run_glue.py 微调模型
  • SQLalachemy 错误 - Lost connection to MySQL server during query