使用pandas_datareader获取FB股价遇TypeError错误求助
解决pandas_datareader获取Meta(原Facebook)股价时的TypeError问题
错误原因
这个TypeError: string indices must be integers错误,本质是pandas_datareader内置的Yahoo Finance数据源接口早已失效,返回的是非结构化字符串数据而非预期的可索引DataFrame,导致代码尝试用索引访问字符串时触发错误。另外需要注意:Facebook已更名为Meta Platforms,股票代码从FB改为META,继续用FB可能无法获取有效数据。
解决方案
推荐使用官方替代库yfinance来获取Yahoo Finance数据,步骤如下:
- 安装yfinance库
pip install yfinance
- 修改代码获取数据
方式一:直接使用yfinance(更简洁)
import yfinance as yf import datetime as dt company = 'META' # 注意股票代码已变更为META start = dt.datetime(2012, 1, 1) end = dt.datetime.now() # 获取股价数据,返回标准DataFrame data = yf.download(company, start=start, end=end)
方式二:结合pandas_datareader使用yfinance
如果习惯用pandas_datareader的调用方式,可以通过yf.pdr_override()让其适配yfinance数据源:
import pandas_datareader.data as pdr import yfinance as yf import datetime as dt # 覆盖pandas_datareader的Yahoo接口 yf.pdr_override() company = 'META' start = dt.datetime(2012, 1, 1) end = dt.datetime.now() data = pdr.get_data_yahoo(company, start=start, end=end)
验证结果
运行上述代码后,data会是包含Open、High、Low、Close、Adj Close、Volume列的DataFrame,可正常进行后续分析操作,不会再触发类型错误。
内容的提问来源于stack exchange,提问作者NikoMolecule
相关产品推荐
相关产品推荐

