使用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
相关产品推荐
相关产品推荐

