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

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

解决pandas_datareader读取Yahoo财经数据时的TypeError问题

问题说明

此前正常运行的股票数据获取代码,近期执行时频繁抛出TypeError: string indices must be integers错误,更换股票代码后问题依然存在。错误根源在于Yahoo财经页面结构发生了更新,旧版pandas_datareader的Yahoo数据解析逻辑已无法适配。

解决方案

方案1:使用yfinance替代(推荐)

yfinance是专门针对Yahoo财经数据维护的第三方库,更新及时,兼容性更强。

  1. 安装yfinance:
pip install yfinance
  1. 修改后的代码示例:
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns
import yfinance as yf
import datetime

start = datetime.datetime(2015, 6, 1)
end = datetime.datetime(2022, 6, 30)

# 下载单只股票数据
sbin = yf.download('SBIN.BO', start=start, end=end)
tatamotors = yf.download('TATAMOTORS.BO', start=start, end=end)
reliance = yf.download('RELIANCE.BO', start=start, end=end)

# 验证数据
print(sbin.head())

方案2:修复pandas_datareader的Yahoo模块(可选)

若坚持使用pandas_datareader,可安装社区修复的分支版本:

pip install pandas-datareader-yahoo

之后代码无需大幅修改,但该方案的稳定性不如yfinance,后续仍可能因Yahoo页面更新再次出现问题。

错误原因解析

原代码中web.DataReader('SBIN.BO','yahoo',...)调用的YahooDailyReader模块,依赖固定的页面结构提取JSON数据。Yahoo财经更新页面后,返回的HTML内容结构变化,导致解析出的j不再是预期的字典类型,而是字符串,进而触发"字符串索引必须为整数"的错误。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.04 11:50:23