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

