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

Python股票数据代码报错KeyError: ['Date' 'Adj Close'] not found in axis如何解决

问题解决方法

该报错的核心原因是你调用drop方法时指定的Date和Adj Close两个列,当前DataFrame的列中不存在。

排查步骤

  • 首先在df = df.reset_index()代码后新增一行输出列名的代码,确认当前DataFrame的实际列名:
print(df.columns.tolist())

常见原因及对应解决方案

原因1:pandas_datareader的雅虎数据源已停止维护,拉取的股票数据结构异常

这是最常见的触发原因,雅虎财经多年前就调整了官方API,pandas_datareader原生的雅虎接口早已无法正常返回标准结构的股票数据,甚至会返回空值或异常格式数据。
解决方法:替换为yfinance库拉取雅虎股票数据,操作如下:

  1. 先安装依赖库:
pip install yfinance
  1. 修改原有代码的拉取逻辑,修改后的完整代码如下:
# import libraries:
import numpy as np
import streamlit as st
import matplotlib.pyplot as plt
import yfinance as yf
from keras.models import load_model

start = '2010-01-01'
end = '2021-08-20'

# 用yfinance拉取雅虎股票数据
df = yf.download('CENTUM.NS', start=start, end=end)
df.head()

df.tail()

df = df.reset_index()
df.head()

df=df.drop(['Date','Adj Close'],axis = 1)
df.head()

原因2:列名拼写/大小写不匹配

如果第一步打印出的列名里存在对应字段,只是拼写和你写的不一致(比如列名为date、adj_close等),直接把drop方法里的列名替换为实际打印出的列名即可。

原因3:数据拉取失败

如果打印出的列名完全不符合股票数据的结构,或者DataFrame为空,请检查你使用的股票代码CENTUM.NS是否正确、指定的时间范围是否有效、当前网络是否可以正常访问雅虎财经接口。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 06:42:00