You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用pandas_datareader获取Yahoo Finance股票数据时遇TypeError错误

问题与解决方案

问题详情

用于获取股票数据的代码:

import pandas_datareader

end = "2022-12-15"
start = "2022-12-15"
stock_list = ["TATAELXSI.NS"]

data = pandas_datareader.get_data_yahoo(symbols=stock_list, start=start, end=end)

print(data)

运行后报错:TypeError: string indices must be integers,即使将股票代码以列表形式传入symbols参数,错误依然存在,完整堆栈信息如下:

Traceback (most recent call last):
  File "C:\Users\Deepak Shetter\PycharmProjects\100DAYSOFPYTHON\mp3downloader.py", line 7, in <module>
    data = pandas_datareader.get_data_yahoo(symbols=[TATAELXSI], start=start, end=end)
  File "C:\Users\Deepak Shetter\PycharmProjects\100DAYSOFPYTHON\venv\lib\site-packages\pandas_datareader\data.py", line 80, in get_data_yahoo
    return YahooDailyReader(*args, **kwargs).read()
  File "C:\Users\Deepak Shetter\PycharmProjects\100DAYSOFPYTHON\venv\lib\site-packages\pandas_datareader\base.py", line 258, in read
    df = self._dl_mult_symbols(self.symbols)
  File "C:\Users\Deepak Shetter\PycharmProjects\100DAYSOFPYTHON\venv\lib\site-packages\pandas_datareader\base.py", line 268, in _dl_mult_symbols
    stocks[sym] = self._read_one_data(self.url, self._get_params(sym))
  File "C:\Users\Deepak Shetter\PycharmProjects\100DAYSOFPYTHON\venv\lib\site-packages\pandas_datareader\yahoo\daily.py", line 153, in _read_one_data
    data = j["context"]["dispatcher"]["stores"]["HistoricalPriceStore"]
TypeError: string indices must be integers

原因分析

这个错误是因为pandas_datareader官方的Yahoo数据接口已失效,Yahoo Finance调整了数据返回格式,旧版本的pandas_datareader无法解析新的响应内容,导致尝试对字符串进行字典索引操作时失败。

解决办法

方法一:改用yfinance库(推荐)

yfinance是专门针对Yahoo Finance数据的第三方库,兼容性更好,官方也推荐用它替代pandas_datareader的Yahoo接口。

  1. 安装库:
pip install yfinance
  1. 替换代码:
import yfinance as yf

end = "2022-12-15"
start = "2022-12-15"
stock_list = ["TATAELXSI.NS"]

# 下载数据
data = yf.download(stock_list, start=start, end=end)
print(data)

方法二:修复pandas_datareader的Yahoo接口(不推荐,稳定性差)

如果坚持使用pandas_datareader,可以安装社区修复的版本,但后续可能仍会出现兼容性问题:

pip install git+https://github.com/pydata/pandas-datareader.git

不过这种方式不如直接使用yfinance可靠。

内容的提问来源于stack exchange,提问作者Deepak

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.08 11:01:35