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

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

解决pandas_datareader拉取Yahoo Finance数据时的TypeError错误

错误原因

Yahoo Finance的网页结构与接口已更新,旧版pandas_datareader内置的YahooDailyReader模块依赖的解析逻辑失效,无法正确处理返回的响应内容(当前返回的是字符串而非预期的JSON结构),因此触发string indices must be integers类型错误。

解决方案

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

yfinance是专门针对Yahoo Finance数据维护的第三方库,兼容性更强,使用逻辑与原代码接近:

  1. 先安装yfinance:
pip install yfinance
  1. 替换代码如下:
import yfinance as yf

# 直接下载指定时间段的股票数据
stocks = yf.download('MSFT', start='2020-01-14', end='2023-01-14')

# 或通过Ticker对象获取更多维度的数据
msft = yf.Ticker('MSFT')
stocks = msft.history(start='2020-01-14', end='2023-01-14')

方法2:适配pandas_datareader使用yfinance底层(可选)

如果坚持使用pandas_datareader框架,可通过覆盖底层实现适配:

  1. 确保已安装yfinance后,修改代码:
from pandas_datareader import data as pdr
import yfinance as yf

# 让pandas_datareader调用yfinance的接口
yf.pdr_override()

stocks = pdr.get_data_yahoo('MSFT', start='2020-01-14', end='2023-01-14')

补充说明

pandas_datareader官方已不再维护原Yahoo数据源的解析逻辑,官方文档也明确推荐使用yfinance替代,因此优先选择方法1。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.05 02:55:19