Python股票预测模型报NameError: name 'final_df' is not defined如何解决
报错排查思路
出现NameError: name 'final_df' is not defined的核心原因是final_df的赋值语句执行失败,变量没有被成功创建,按以下顺序排查问题:
- 优先检查
final_df赋值行的变量拼写:你代码中写的是adata_testing,但前文对应的测试集变量名为data_testing,多写了前缀字符a,该未定义变量会直接导致赋值语句运行失败,final_df自然不存在。 - 确认
data_training、data_testing两个变量已提前定义:你贴出的代码中只有库导入、模型训练逻辑,没有数据集加载、训练集测试集拆分的相关代码,如果这两个变量未提前赋值,past_100_days = data_training.tail(100)会先报错,同样会导致final_df赋值失败。 - 确认pandas版本兼容性:pandas 2.0及以上版本已经完全移除了
append方法,即使拼写正确,使用append拼接数据也会抛出报错,导致final_df无法生成。
修复方案
- 修正拼写错误,同时将废弃的
append方法替换为pd.concat,修改赋值行代码如下:
# 替换原有错误的赋值行 final_df = pd.concat([past_100_days, data_testing], ignore_index=True)
- 补充数据集加载、拆分逻辑,确保
data_training、data_testing提前完成赋值,示例参考:
# 加载股票数据示例,可替换为你需要的标的和时间范围 start_date = '2010-01-01' end_date = '2024-01-01' df = yf.download('AAPL', start=start_date, end=end_date) # 按8:2比例拆分训练集和测试集,取收盘价列做预测 split_point = int(len(df) * 0.8) data_training = pd.DataFrame(df['Close'][:split_point]) data_testing = pd.DataFrame(df['Close'][split_point:])
- 逐行执行代码确认每一步无报错后,再运行
final_df.head()即可正常输出结果。
内容的提问来源于stack exchange,提问作者Blak040
相关产品推荐
相关产品推荐

