You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用glob打开指定数量Excel文件 提升concat合并文件效率

读取指定数量最新文件的实现方案

glob本身不支持直接按文件修改时间筛选、限制返回数量,你可以配合系统的文件修改时间属性实现需求,参考代码如下:

import glob
import os
import pandas as pd

# 匹配目标路径下的所有Excel文件,可按需调整后缀匹配规则
all_excel = glob.glob("./excel_dir/*.xlsx")
# 按文件最后修改时间倒序排列,最新文件排在最前
sorted_excel = sorted(all_excel, key=lambda f: os.path.getmtime(f), reverse=True)
# 取最新的30份文件,可按需调整切片数值
latest_30_excel = sorted_excel[:30]

# 合并文件
df_all = pd.concat([pd.read_excel(f) for f in latest_30_excel], ignore_index=True)

如果需要按文件创建时间筛选,把os.path.getmtime替换为os.path.getctime即可。

合并操作优化方案
  • 按需读取指定列:读取Excel时通过usecols参数指定需要的列,跳过无用列,可大幅降低读取耗时和内存占用,示例:pd.read_excel(file_path, usecols=["订单号", "金额", "日期"])
  • 提前指定列类型:通过dtype参数提前声明每列的数据类型,避免pandas自动推断列类型的额外耗时,同时可避免类型解析错误
  • 使用适配的解析引擎:读取xlsx格式文件时指定engine="openpyxl",读取xls格式指定engine="xlrd",读取xlsb格式指定engine="pyxlsb",适配的引擎可比默认配置提升30%以上的读取效率
  • 增量写入避免内存占用:如果不需要在内存中保留全量合并后的DataFrame,可以边读取文件边以追加模式写入目标文件,无需将所有文件内容暂存在内存中,适合文件量极大的场景
  • 过滤无效内容:通过skiprows、skipfooter参数跳过重复表头、末尾空行等无效内容,减少无效数据的解析耗时

内容的提问来源于stack exchange,提问作者hoa tran

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.30 06:36:02