使用Pandas DataReader获取Yahoo BTC/USD数据时遇字符串索引错误怎么办?
解决Yahoo获取BTC/USD数据的TypeError问题
问题原因
你遇到的TypeError: string indices must be integers, not 'str'是因为pandas_datareader的Yahoo数据源已不再适配当前Yahoo Finance的API返回格式,解析数据时出现格式不匹配错误。另外你的代码还有一处小问题:导入datetime时用了as dt别名,但初始化start变量时用了datetime.datetime,这会触发NameError,需要一并修正。
解决步骤
- 安装专门适配Yahoo Finance的
yfinance库(替代pandas_datareader的Yahoo模块):
pip install yfinance
- 修改代码,替换数据源并修正变量错误:
import pandas as pd import yfinance as yf import datetime as dt crypto = 'BTC' against_crypto = 'USD' start = dt.datetime(2018, 1, 1) # 修正为dt.datetime,匹配导入的别名 end = dt.datetime.now() # 使用yfinance下载加密货币数据 data = yf.download(f'{crypto}-{against_crypto}', start=start, end=end) # 查看数据前几行验证结果 print(data.head())
- 验证结果:运行代码后,
data会返回包含开盘价、收盘价、成交量等标准金融字段的DataFrame,可直接用于后续分析。
内容的提问来源于stack exchange,提问作者Shayan Navaei
相关产品推荐
相关产品推荐

