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

pandas循环读取Excel工作表后以表名直接命名DataFrame的方法

问题

从多工作表Excel文件批量读取DataFrame时,希望直接用工作表名作为变量名调用数据,无需通过字典键索引,现有基于字典存储的代码如下:

import pandas as pd

excel = 'sample.xlsx'

xls = pd.ExcelFile(excel)
d = {}
for sheet in xls.sheet_names:
    print(sheet)
    d[f'{sheet}'] = pd.read_excel(xls, sheet_name=sheet)

场景约束:Excel包含至少50个工作表,后续工作表数量会持续增加,不适合手动逐个给变量赋值。


回答

方法一:动态注册全局变量(满足直接用变量名调用的需求)

通过globals()修改全局命名空间,循环读取时直接把工作表名作为变量名绑定对应的DataFrame,不需要提前定义变量,工作表数量增减时无需修改代码:

import pandas as pd

excel = 'sample.xlsx'
xls = pd.ExcelFile(excel)

for sheet in xls.sheet_names:
    print(sheet)
    globals()[sheet] = pd.read_excel(xls, sheet_name=sheet)

运行后直接输入alpha、beta、charlie即可访问对应DataFrame。

注意:该方法要求工作表名符合Python变量命名规则(不能以数字开头、不能包含空格/运算符等特殊字符、不能和Python内置关键字重名),否则会抛出命名错误。

方法二:保留字典存储(工程场景优先推荐)

字典是批量加载异构数据的最优存储方式,相比散落在全局命名空间的独立变量,字典更方便做批量遍历、统一清洗、异常排查,也不会出现变量名冲突的问题。如果觉得字典索引麻烦,仅需要把高频使用的表单独赋值即可:

# 读取逻辑保留原字典实现即可
import pandas as pd
excel = 'sample.xlsx'
xls = pd.ExcelFile(excel)
d = {}
for sheet in xls.sheet_names:
    d[sheet] = pd.read_excel(xls, sheet_name=sheet)

# 仅把常用的表单独解包为独立变量
alpha = d['alpha']
beta = d['beta']

# 批量处理所有表时直接遍历字典,不用逐个找变量
for sheet_name, df in d.items():
    # 在这里写统一的数据处理逻辑,比如去重、格式转换
    pass

如果确认所有工作表名都是合法变量名,也可以直接把字典批量更新到全局命名空间,效果和方法一完全一致:

globals().update(d)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.27 11:45:37