使用pandas-datareader调用YahooDailyReader提示No data fetched报错如何解决
报错原因说明
- 原生
pandas_datareader内置的雅虎财经接口已经在2021年被雅虎官方废弃,旧版本的get_data_yahoo方法无法正常请求到数据 - 你使用的股票代码
FB已在2021年正式更名为META,使用旧代码请求该标的数据也会触发拉取失败
解决方法
方案1:使用yfinance库替代(最稳定)
yfinance是目前主流的雅虎财经数据拉取工具,完全兼容pandas数据格式,使用步骤如下:
- 安装依赖库
pip install yfinance
- 替换原有代码即可,示例如下:
import yfinance as yf import datetime symbols = ['MSFT','AMZN','AAPL','GOOG','META'] # 将FB替换为META start_date = datetime.datetime(2019,1,1) end_date = datetime.datetime(2019,7,1) stock_data = yf.download(symbols, start=start_date, end=end_date) print(stock_data.head())
方案2:修复原生pandas_datareader接口
如果需要保留原有pandas_datareader的调用逻辑,可通过yfinance覆写原有接口:
- 先安装
yfinance和最新版pandas_datareader
pip install yfinance pandas-datareader --upgrade
- 在代码开头添加覆写逻辑即可:
import yfinance as yf yf.pdr_override() # 覆写pandas_datareader的雅虎接口 import datetime import pandas_datareader.data as web symbols = ['MSFT','AMZN','AAPL','GOOG','META'] start_date = datetime.datetime(2019,1,1) end_date = datetime.datetime(2019,7,1) stock_data = web.get_data_yahoo(symbols,start_date,end_date) print(stock_data.head())
其他排查点
- 确认当前网络可以正常访问雅虎财经服务,网络限制会导致请求失败
- 确认所有股票代码的有效性,退市、更名的标的无法拉取对应时段的行情数据
内容的提问来源于stack exchange,提问作者cgaters
相关产品推荐
相关产品推荐

