使用yfinance的pdr_override调用pdr.get_data_yahoo提取股票数据失效求助
解决yfinance覆盖pandas_datareader失效的问题
问题根源
近期yfinance或pandas_datareader的版本迭代,导致yfin.pdr_override()的覆盖机制失效,无法通过pandas_datareader的get_data_yahoo拉取Yahoo Finance数据。
方案1:直接用yfinance原生接口(推荐)
没必要依赖pandas_datareader,直接调用yfinance的下载接口更稳定,代码修改如下:
import numpy as np from datetime import datetime from scipy.stats import norm import yfinance as yfin days_to_test = 30 days_to_predict = 1 simulations = 1000 ticker = 'MSFT' # 直接通过yfinance下载数据,返回结构和原pdr接口一致 data = yfin.download(ticker, start=datetime(2000, 1, 1), end=datetime.today())['Close']
方案2:保留pandas_datareader调用方式
如果一定要沿用pdr的写法,手动替换get_data_yahoo函数即可:
import numpy as np from datetime import datetime import pandas_datareader as pdr from scipy.stats import norm import yfinance as yfin days_to_test = 30 days_to_predict = 1 simulations = 1000 ticker = 'MSFT' # 手动替换pdr的get_data_yahoo为yfinance的实现 pdr.get_data_yahoo = yfin.download data = pdr.get_data_yahoo(ticker, start=datetime(2000, 1, 1), end=datetime.today())['Close']
额外提示
- 先更新yfinance到最新版本:执行
pip install --upgrade yfinance end参数直接传入datetime.today()即可,无需转成字符串格式
内容的提问来源于stack exchange,提问作者Jason Gu
相关产品推荐
相关产品推荐

