Pandas Datareader报错TypeError:string indices must be integers求助
解决pandas_datareader调用Yahoo数据源报错的问题
报错原因
Yahoo金融的API接口已变更,pandas_datareader原有的Yahoo数据源适配逻辑失效,导致返回内容格式不符合预期,触发TypeError: string indices must be integers错误。
解决方法
方法一:改用yfinance库(推荐)
yfinance是专门对接Yahoo金融的第三方库,稳定性更强,替代步骤如下:
- 安装yfinance:
pip install yfinance
- 修改代码为:
import yfinance as yf import datetime as dt ticker = "NLY" start = dt.datetime(2022, 12, 1) end = dt.datetime.now() df = yf.download(ticker, start=start, end=end) print(df)
方法二:升级pandas_datareader并依赖yfinance适配
如果坚持使用pandas_datareader,需要通过yfinance做适配:
- 升级pandas_datareader并安装yfinance:
pip install --upgrade pandas_datareader pip install yfinance
- 修改代码(无需大幅改动,确保环境依赖正确即可):
import pandas_datareader as web import datetime as dt import yfinance as yf # 导入yfinance作为适配层 yf.pdr_override() # 启用pandas_datareader与yfinance的兼容模式 ticker = "NLY" start = dt.datetime(2022, 12, 1) end = dt.datetime.now() df = web.DataReader(ticker, "yahoo", start, end) print(df)
内容的提问来源于stack exchange,提问作者doge
相关产品推荐
相关产品推荐

