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

如何用Python循环解析多工作表Excel并自动生成对应DataFrame

解析多工作表Excel文件并自动化变量赋值

首先你原代码里有个小问题:df没有预先初始化就直接用df[i]赋值,这会抛出NameError。咱们一步步来解决你的两个需求:用for循环解析多表,以及自动化变量赋值。

方法1:用字典存储所有DataFrame(推荐)

字典是管理多个DataFrame最清晰安全的方式,你可以用工作表名或索引作为键,后续调用也一目了然:

import pandas as pd

path = "你的Excel文件路径.xlsx"
xls = pd.ExcelFile(path)

# 用字典推导式一次性读取所有工作表
dfs = {sheet_name: xls.parse(sheet_name) for sheet_name in xls.sheet_names}

# 按顺序赋值到目标变量(如果工作表顺序固定的话)
sales = dfs[xls.sheet_names[0]]
customers = dfs[xls.sheet_names[1]]
dates = dfs[xls.sheet_names[2]]
employees = dfs[xls.sheet_names[3]]

如果你的工作表名本身就是sales、customers这类,那更省事——直接通过dfs["sales"]就能拿到对应数据。

方法2:完全自动化变量赋值

要是想彻底省去手动赋值的步骤,可以把目标变量名和工作表做绑定,用循环实现自动赋值:

import pandas as pd

path = "你的Excel文件路径.xlsx"
xls = pd.ExcelFile(path)
sheet_names = xls.sheet_names

# 定义要创建的变量名,和工作表顺序一一对应
target_vars = ["sales", "customers", "dates", "employees"]

# 循环读取并赋值到全局变量
for var_name, sheet in zip(target_vars, sheet_names):
    globals()[var_name] = xls.parse(sheet)

# 现在直接调用变量即可
print(sales.head())

⚠️ 小提醒:用globals()动态创建变量虽然方便,但如果变量名和现有代码里的变量重名,会直接覆盖原有值,所以只在你明确不会有命名冲突时使用。还是更推荐方法1的字典存储方式。

补充:简化的列表式循环读取

如果只是想按索引循环读取,也可以用列表存储后直接解包赋值:

import pandas as pd

path = "你的Excel文件路径.xlsx"
xls = pd.ExcelFile(path)
dfs = []

# 循环读取所有工作表到列表
for sheet_idx in range(len(xls.sheet_names)):
    dfs.append(pd.read_excel(xls, sheet_name=sheet_idx))

# 直接解包赋值给四个变量
sales, customers, dates, employees = dfs

这种方式简洁直观,省去了逐个索引取值的麻烦。

内容的提问来源于stack exchange,提问作者Juan Sebastian Roa

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.09 13:57:33