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

如何用Pandas实现多Excel多工作表数据摄入并单独存储各表?

优化Excel数据摄入程序:按文件-工作表层级管理DataFrame

你当前的代码会把每个Excel文件的所有工作表合并成单个DataFrame存入列表,没法区分同文件内的不同工作表。要实现按文件访问、每个工作表独立成DataFrame的需求,最适合用嵌套字典的结构——外层用文件名(不含后缀)做键,内层用工作表名做键,对应的值就是该工作表的DataFrame。

下面是优化后的代码,同时解决了路径兼容性、数据溯源的问题:

import pandas as pd
from pathlib import Path

# 用pathlib处理路径,跨平台更可靠
folder = Path('specified_path')

# 过滤出文件夹里的Excel文件(避免非Excel文件干扰)
excel_files = [f for f in folder.iterdir() if f.suffix in ['.xlsx', '.xls', '.xlsm']]

# 构建嵌套字典:{文件名: {工作表名: DataFrame}}
file_sheet_dfs = {}
for file in excel_files:
    # 读取当前文件的所有工作表,返回的是{工作表名: DF}的字典
    sheet_dfs = pd.read_excel(file, sheet_name=None)
    # 给每个工作表的DF添加文件名和工作表名字段,方便溯源
    for sheet_name, df in sheet_dfs.items():
        df['excel_file'] = file.stem  # 文件名(不含后缀)
        df['sheet_name'] = sheet_name
    # 将当前文件的工作表字典存入外层字典
    file_sheet_dfs[file.stem] = sheet_dfs

关键优化点说明:

  • 路径处理:用pathlib.Path替代字符串拼接路径,自动适配Windows/macOS/Linux的路径分隔符,避免\转义或跨平台报错的问题
  • 数据结构:直接利用pd.read_excel(sheet_name=None)返回的工作表字典,不用先合并再拆分,完整保留原有的工作表层级关系
  • 数据溯源:给每个DataFrame添加excel_file和sheet_name字段,后续分析时能快速定位数据来自哪个文件的哪个工作表
  • 文件过滤:只读取后缀为.xlsx/.xls/.xlsm的文件,避免误读其他类型文件

额外优化建议:

  • 异常处理:如果文件夹里可能存在损坏的Excel文件,可以给读文件的逻辑加try-except,避免单个文件出错导致整个程序中断:
    for file in excel_files:
        try:
            sheet_dfs = pd.read_excel(file, sheet_name=None)
            # ...后续处理...
            file_sheet_dfs[file.stem] = sheet_dfs
        except Exception as e:
            print(f"读取文件{file.name}出错: {e}")
    
  • 内存优化:如果Excel文件很大,可以指定usecols参数只读取需要的列,减少内存占用:
    sheet_dfs = pd.read_excel(file, sheet_name=None, usecols=['列1', '列2', '列3'])
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.19 19:15:53