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

使用pandas_datareader与yfinance获股票数据遇TypeError求助

问题描述

我正在PyCharm中编写股票价格预测程序,导入的库如下:

import pandas as pd
import numpy as np
import pandas_datareader as web
import datetime as dt
import yfinance as yf

触发错误的代码行:

# load Data
company = 'fb'
start = dt.datetime(2012, 1, 1)
end = dt.datetime(2020, 1, 1)

df = yf.download(tickers=['^GSPC'], start=start, end=end)
data = web.DataReader(company, 'yahoo', start, end)

运行后yf.download执行正常,但web.DataReader触发如下错误:

C:\ProgramData\Anaconda3\envs\pythonProject\python.exe F:\pythonProject\main.py 
[*********************100%***********************]  1 of 1 completed
Traceback (most recent call last):
  File "F:\pythonProject\main.py", line 19, in <module>
    data = web.DataReader(company, 'yahoo', start, end)
  File "C:\Users\Deepanshu\AppData\Roaming\Python\Python310\site-packages\pandas\util\_decorators.py",      line 211, in wrapper
    return func(*args, **kwargs)
  File "C:\ProgramData\Anaconda3\envs\pythonProject\lib\site-packages\pandas_datareader\data.py", line 379, in DataReader
).read()
  File "C:\ProgramData\Anaconda3\envs\pythonProject\lib\site-packages\pandas_datareader\base.py", line 253, in read
    df = self._read_one_data(self.url, params=self._get_params(self.symbols))
  File "C:\ProgramData\Anaconda3\envs\pythonProject\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

Process finished with exit code 1

已安装yfinance库,但每次运行都会出现相同错误,请求帮助解决。

解决方案

这个错误是因为pandas_datareader的Yahoo数据源已失效,Yahoo更新API接口结构后,pandas_datareader未及时适配,导致解析返回内容时出错。

你已安装yfinance,直接用它替代pandas_datareader获取股票数据即可,修改代码如下:

# 替换原web.DataReader的代码行
data = yf.download(tickers=company, start=start, end=end)

如果需要和原DataReader返回格式保持一致,可使用yfinance的Ticker类:

ticker = yf.Ticker(company)
data = ticker.history(start=start, end=end)

另外注意:原代码中company = 'fb'需改为'META',Facebook已更名,Yahoo财经中对应的股票代码为META,使用fb可能无法获取到正确数据。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.01 11:46:02