使用pandas_datareader调用Yahoo数据源时触发TypeError错误求助
解决
pandas_datareader调用Yahoo Finance出现的TypeError: string indices must be integers错误 这个错误不是你的代码存在低级问题,而是pandas_datareader的Yahoo数据源已无法适配Yahoo Finance最新的API结构——Yahoo近期调整了接口返回格式,导致旧的web.DataReader解析逻辑失效,进而抛出该类型错误。
你已经导入了yfinance库,这正是合适的替代方案,直接用它获取数据即可,修改后的代码如下:
import numpy as np import pandas as pd import yfinance as yf import datetime as dt tickers = ['BAC','JPM','C','NSRGY'] start_date = dt.datetime(2019,2,1) end_date = dt.datetime(2019,12,30) # 使用yfinance的download方法替代pandas_datareader data = yf.download(tickers, start=start_date, end=end_date)
补充说明:
yf.download返回的数据结构和web.DataReader获取的Yahoo数据结构完全一致,无需修改后续的处理逻辑- 如果想保留
pandas_datareader的调用习惯,也可以启用yfinance的兼容接口:from pandas_datareader import data as pdr yf.pdr_override() # 启用兼容模式 data = pdr.get_data_yahoo(tickers, start=start_date, end=end_date)
内容的提问来源于stack exchange,提问作者Richard
相关产品推荐
相关产品推荐

