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

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无法生成。
修复方案
  1. 修正拼写错误,同时将废弃的append方法替换为pd.concat,修改赋值行代码如下:
# 替换原有错误的赋值行
final_df = pd.concat([past_100_days, data_testing], ignore_index=True)
  1. 补充数据集加载、拆分逻辑,确保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:])
  1. 逐行执行代码确认每一步无报错后,再运行final_df.head()即可正常输出结果。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 10:00:01