使用pandas_datareader从Yahoo获取数据时触发TypeError报错求助
解决pandas_datareader运行时的TypeError问题
问题重现
运行以下代码时触发TypeError: string indices must be integers错误:
import datetime as dt import pandas_datareader as web symbol = "FB" start = dt.datetime(2020,1,1) end = dt.datetime(2022,1,1) df = web.Datareader(symbol, "yahoo", start,end)
错误原因及解决方案
1. 方法名大小写错误
代码中web.Datareader拼写错误,正确方法名为**web.DataReader**(第二个字母R需大写)。大小写错误会导致调用非预期对象,进而触发字符串索引相关的类型错误。
2. Yahoo数据源兼容问题
当前pandas_datareader原生Yahoo数据源已停止维护,需通过yfinance库做兼容适配:
- 安装yfinance库:
pip install yfinance - 原标的"FB"已更名为"META",需同步修改避免获取不到数据。
修正后的完整代码
import datetime as dt import pandas_datareader as web import yfinance as yf # 启用pandas_datareader与yfinance的兼容模式 yf.pdr_override() symbol = "META" start = dt.datetime(2020, 1, 1) end = dt.datetime(2022, 1, 1) # 使用正确方法名调用 df = web.DataReader(symbol, "yahoo", start, end) # 验证结果 print(df.head())
内容的提问来源于stack exchange,提问作者MpH81679
相关产品推荐
相关产品推荐

