如何用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
相关产品推荐
相关产品推荐

