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

如何编写数据摄入程序加载多工作表Excel到Pandas DataFrame?

多Excel多工作表批量加载方案

你的代码思路已经抓住了核心需求,这里给你补充几个实用的优化点和扩展方案,让程序更健壮、更贴合实际分析场景:

核心优化方向

  • 安全路径拼接:直接用folder+file容易出现跨系统路径分隔符问题,换成os.path.join()或pathlib能避免这类低级错误。
  • 过滤非Excel文件:os.listdir会返回文件夹内所有内容,必须筛选.xlsx/.xls/.xlsm格式,避免读取无效文件报错。
  • 同结构工作表合并:既然所有文件的工作表结构一致,把同名工作表的数据合并成大DataFrame,后续分析会更高效。

优化后的合并版代码

import os
import pandas as pd

folder = "specified_path"
# 用字典存储每个工作表的合并结果
merged_sheets = {}

for filename in os.listdir(folder):
    # 只处理Excel格式文件
    if filename.endswith((".xlsx", ".xls", ".xlsm")):
        file_path = os.path.join(folder, filename)
        excel_handler = pd.ExcelFile(file_path)
        
        for sheet_name in excel_handler.sheet_names:
            df = excel_handler.parse(sheet_name)
            # 添加来源文件标记,方便后续数据溯源
            df["source_file"] = filename
            
            # 合并同名称工作表数据
            if sheet_name in merged_sheets:
                merged_sheets[sheet_name] = pd.concat([merged_sheets[sheet_name], df], ignore_index=True)
            else:
                merged_sheets[sheet_name] = df

# 示例:输出第一个工作表的前5行数据
if merged_sheets:
    sample_df = next(iter(merged_sheets.values()))
    print(sample_df.head())

保留原文件层级的优化版代码

如果需要维持「文件-工作表」的层级存储结构,只需要在你的原代码基础上补充路径和文件过滤逻辑:

import os
import pandas as pd

folder = "specified_path"
sheet_contents = {}

for filename in os.listdir(folder):
    if filename.endswith((".xlsx", ".xls", ".xlsm")):
        file_path = os.path.join(folder, filename)
        data = pd.ExcelFile(file_path)
        file_data = {}
        
        for sheet in data.sheet_names:
            file_data[sheet] = data.parse(sheet)
        
        sheet_contents[filename[:-5]] = file_data

额外提示

如果处理超大Excel文件,建议使用pd.read_excel()的chunksize参数分块读取,避免内存溢出。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.20 05:55:24