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

Python读取多级子目录下多Excel文件并合并为时间序列DataFrame

Python批量读取分层目录Excel并合并为DataFrame方案

依赖准备

需要提前安装以下包:

  • pandas:核心数据处理库
  • openpyxl:读取.xlsx格式文件的引擎,若你的文件是.xls格式请安装xlrd==1.2.0(更高版本xlrd不再支持xls格式)

安装命令:

pip install pandas openpyxl
# 如果是xls文件执行 pip install pandas xlrd==1.2.0

完整实现代码

import pandas as pd
from pathlib import Path

# 1. 配置参数
ROOT_DIR = Path("./Data")  # 你的Data文件夹路径,可修改为绝对路径
EXCEL_SUFFIX = "*.xlsx"  # 如果是xls文件改为 "*.xls"
# 可选配置:如果Excel有固定表头/需要跳过行,修改这里的read_excel参数
READ_PARAMS = {
    "header": 0,  # 表头所在行,从0开始计数
    "engine": "openpyxl"  # xls文件改为 "xlrd"
}

# 2. 递归遍历所有符合条件的Excel文件
all_excel_files = list(ROOT_DIR.rglob(EXCEL_SUFFIX))
df_list = []

for file_path in all_excel_files:
    # 从路径中提取年份、月份信息,路径结构为 Data/年/月/xxx.xlsx
    year = file_path.parts[-3]
    month = file_path.parts[-2]
    
    # 读取单个Excel文件
    tmp_df = pd.read_excel(file_path, **READ_PARAMS)
    
    # 可选:把年、月信息加入DataFrame,方便后续构建时间序列
    tmp_df["year"] = int(year)
    tmp_df["month"] = int(month)
    # 如果需要生成完整日期,可根据业务逻辑补充,比如加上文件里的日字段
    # tmp_df["date"] = pd.to_datetime(tmp_df[["year", "month", "day"]])
    
    df_list.append(tmp_df)

# 3. 合并所有数据为单个DataFrame
full_df = pd.concat(df_list, ignore_index=True)

# 可选:设置时间序列索引
# full_df = full_df.set_index("date")

# 验证结果
print(full_df.shape)
print(full_df.head())

常见问题处理

  • 若所有Excel的列名存在大小写、拼写差异,可在读取后统一对齐列名再合并
  • 若文件量极大(超过10万份),可改用生成器模式遍历,避免内存溢出
  • 若Excel存在多个工作表,可在pd.read_excel中指定sheet_name参数读取指定工作表

内容的提问来源于stack exchange,提问作者Arun Kumar Panda

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 19:45:02