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

使用Python从Yahoo Finance获取数据时遭遇TypeError问题求助

解决Yahoo Finance数据获取的TypeError错误

错误原因

你遇到的TypeError: string indices must be integers,核心问题是Yahoo Finance不识别单独的BTC或USD符号,加密货币需要用配对格式(如BTC-USD)来查询,而非将两种货币拆分为列表元素。即便启用了yf.pdr_override(),错误的符号格式会导致接口返回的内容不是预期的JSON结构,进而触发索引错误。

修复方案

方案1:修正符号格式并保留pandas_datareader调用

把单独的货币列表改成配对符号:

import matplotlib.pyplot as plt
import pandas as pd
import pandas_datareader as web
import datetime as dt

import yfinance as yf
yf.pdr_override()

# 直接使用配对符号
y_symbols = "BTC-USD"

startdate = dt.datetime(2016,1,1)
enddate = dt.datetime.now()

# 调用修正后的数据获取
data = web.get_data_yahoo(y_symbols, start=startdate, end=enddate)
print(data.head())

方案2:直接使用yfinance原生接口(更稳定)

跳过pandas_datareader,直接用yfinance的API,兼容性更好:

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

y_symbols = "BTC-USD"
startdate = dt.datetime(2016,1,1)
enddate = dt.datetime.now()

# 直接使用yfinance的download方法
data = yf.download(y_symbols, start=startdate, end=enddate)
print(data.head())

额外检查

  • 确保yfinance和pandas_datareader是最新版本:
pip install --upgrade yfinance pandas_datareader

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.28 21:52:13