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

Python中如何通过字典遍历for循环加载多个pandas DataFrame?

错误原因

  • 直接遍历字典默认只会迭代字典的键,要同时获取键和值需要调用字典的.items()方法,这是你遇到「值太多无法解包」报错的根本原因:每次循环只拿到了单个字符串类型的键,无法拆分为name、link两个变量。
  • 即使修复遍历逻辑,直接写name = pd.read_excel(...)也无法生成q1、q2、q3命名的变量:这里的name是循环局部变量,每次循环都会覆盖上一次的赋值,最终只会保留最后一次循环的结果,且变量名为name而非你预期的键名。

解决方案

方案1(更推荐):用字典统一存储所有DataFrame

这种方式不会污染全局命名空间,后续要批量处理所有DataFrame时也更方便,示例代码如下:

import pandas as pd
data = {'q1':'q1data.xlsx','q2':'q2data.xlsx','q3':'q3data.xlsx'}
# 初始化空字典存储结果,键为q1/q2/q3,值为对应的DataFrame
dfs = {}
for name, link in data.items():
    dfs[name] = pd.read_excel(link, sheet_name=0, header=0)

使用时直接通过dfs['q1']、dfs['q2']即可调用对应的DataFrame。

方案2:生成独立的q1/q2/q3全局变量

如果确实需要直接使用q1、q2、q3作为变量名,可以通过修改全局命名空间实现,示例代码如下:

import pandas as pd
data = {'q1':'q1data.xlsx','q2':'q2data.xlsx','q3':'q3data.xlsx'}
for name, link in data.items():
    globals()[name] = pd.read_excel(link, sheet_name=0, header=0)

运行后即可直接调用q1、q2、q3变量获取对应DataFrame。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 20:24:04