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

使用for循环按年份创建命名Pandas DataFrame出现NameError如何解决

问题原因

你当前的代码仅为循环内的局部临时变量db设置了name属性,并没有将生成的年份DataFrame注册为全局可访问的变量,因此循环结束后调用recruits2023会触发未定义报错。

解决方法

方案1:直接生成全局独立变量(完全匹配你的需求)

不需要手动维护年份列表,可以自动识别数据集中所有存在的招生年份生成对应变量:

# 自动获取数据集中所有存在的招生年份
all_years = recruits_final['Class'].unique()

for year in all_years:
    # 生成变量名,比如2000对应recruits2000
    var_name = f'recruits{year}'
    # 筛选对应年份的数据
    year_df = recruits_final[recruits_final['Class'] == year]
    # 注册为全局变量
    globals()[var_name] = year_df

运行完成后你就可以直接在全局调用recruits2000、recruits2023等变量。

方案2:更规范的字典存储方案(更推荐)

如果不需要强制使用独立变量名,用字典统一管理所有年份的DataFrame可以避免全局命名空间污染,后续批量处理也更方便:

recruits_dict = {}
all_years = recruits_final['Class'].unique()

for year in all_years:
    recruits_dict[year] = recruits_final[recruits_final['Class'] == year]

使用时直接通过年份取值即可,比如要取2023年的数据调用recruits_dict[2023]即可。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.14 04:18:03