使用pandas_datareader的get_data_yahoo获取部分股票代码数据时报错
解决pandas_datareader获取FRE.DE数据时的KeyError问题
问题根源
你碰到的KeyError: 'Date',本质是pandas_datareader的YahooDailyReader模块跟不上Yahoo Finance API的格式更新。哪怕Yahoo网页上能看到FRE.DE的历史数据,但旧库的解析逻辑无法适配当前Yahoo返回的响应结构,尤其是对欧洲这类非美股市场的股票代码,这类兼容性问题会更突出。
靠谱的解决方案
别死磕pandas_datareader的Yahoo接口了,改用yfinance库吧——这是社区专门维护的、适配Yahoo Finance的工具,兼容性和稳定性都好太多。
第一步:安装yfinance
打开终端执行以下命令:
pip install yfinance
第二步:替换代码获取数据
把你的代码改成下面这样,就能正常拿到FRE.DE的历史数据了:
import pandas as pd import yfinance as yf %matplotlib inline # 获取FRE.DE指定时间段的行情数据 df = yf.download('FRE.DE', start='2018-10-1', end='2018-11-30') df.head()
返回的数据格式和你之前用pandas_datareader拿到的完全一致,后续的分析、可视化操作都不用调整。
补充说明
pandas_datareader的Yahoo接口已经停止维护很久了,Yahoo Finance的API结构经历了多次更新,旧库的解析逻辑早就跟不上节奏,非美股股票更容易触发这类解析错误。而yfinance会实时跟进Yahoo的API变化,能有效避开这类坑。
内容的提问来源于stack exchange,提问作者Gerald
相关产品推荐
相关产品推荐

