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

使用web.DataReader调用Yahoo Finance API时遇TypeError错误求助

解决pandas_datareader调用Yahoo Finance API时的TypeError问题

问题概述

使用pandas_datareader库的DataReader调用Yahoo Finance API获取资产历史数据(包括GOOG、AAPL、MSFT及目标资产BTC-USD)时,触发TypeError: string indices must be integers错误,更换资产符号后问题依旧。

错误原因

pandas_datareader的Yahoo Finance数据源已停止维护,Yahoo Finance的页面结构与接口协议发生了变更,原库的响应解析逻辑无法正确处理当前返回的内容,导致代码尝试对字符串执行字典索引操作(如j["context"]),从而触发类型错误。

解决方案

改用yfinance库,这是目前专门适配Yahoo Finance且维护活跃的第三方库,可稳定获取股票、加密货币等各类资产的历史数据。

步骤1:安装yfinance

执行以下命令安装库:

pip install yfinance

步骤2:替换代码获取数据

以下是适配BTC-USD的完整代码示例:

import yfinance as yf
import pandas as pd
import matplotlib.pyplot as plt

# 设置参数
date_start = "2010-01-01"
date_today = "2020-01-01"
symbol = "BTC-USD"

# 获取数据
ticker = yf.Ticker(symbol)
df = ticker.history(start=date_start, end=date_today)

# 查看前5行数据
print(df.head(5))

代码说明

  • yf.Ticker(symbol):创建对应资产的Ticker对象,支持股票、加密货币等各类Yahoo Finance可查询的资产符号
  • ticker.history(start, end):获取指定时间范围的历史数据,返回的DataFrame结构与pandas_datareader返回的格式兼容,可直接用于后续的数据分析与可视化操作

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.16 03:22:32