使用pandas_datareader获取Yahoo股票数据报“string indices must be integers”错误求助
解决pandas_datareader获取雅虎数据时的"string indices must be integers"错误
这个错误的核心原因是雅虎财经的API接口已更新,旧版pandas_datareader的Yahoo数据源无法正确解析返回的响应结构,导致代码尝试用字符串索引访问仅支持整数索引的对象,触发报错。
以下是可行的解决方法:
方法1:升级pandas_datareader并依赖yfinance
雅虎官方已不再支持原有的数据接口,pandas_datareader现在需要借助yfinance库来对接雅虎数据:
- 先安装/升级依赖:
pip install --upgrade pandas-datareader yfinance
- 修改代码为:
import pandas_datareader as pdr df = pdr.get_data_yahoo('AAPL', start='2020-01-01', end='2020-12-31') print(df)
方法2:直接使用yfinance(更稳定)
如果想绕开pandas_datareader的兼容性问题,可以直接用yfinance库获取数据:
- 安装yfinance:
pip install yfinance
- 使用以下代码:
import yfinance as yf df = yf.download('AAPL', start='2020-01-01', end='2020-12-31') print(df)
额外检查点
- 确保你的Python环境网络正常,没有被代理或防火墙限制访问雅虎财经
- 若仍有问题,尝试清理pip缓存后重新安装依赖:
pip cache purge再执行安装命令
内容的提问来源于stack exchange,提问作者Lorenzo Godoy
相关产品推荐
相关产品推荐

