如何修复使用Pandas DataReader时出现的string indices类型错误
解决pandas_datareader获取Yahoo股票数据报错的问题
问题原因
这个错误是因为Yahoo Finance的API接口已更新,旧版本的pandas_datareader自带的Yahoo数据源无法正常解析返回的数据结构,导致字符串索引操作失败。
解决方法
直接使用yfinance库替代pandas_datareader的Yahoo数据源,步骤如下:
安装yfinance库
执行命令:pip install yfinance修改代码
替换原有的pandas_datareader调用逻辑,改用yfinance获取数据,示例代码:import pandas as pd import yfinance as yf import datetime as dt # 定义时间范围 start_date = '2021-04-15' end_date = '2023-04-14' # 获取MSFT股票数据 df = yf.download('MSFT', start=start_date, end=end_date) print(df.head())验证结果
运行修改后的代码,会返回标准的DataFrame格式,包含Open、High、Low、Close、Adj Close、Volume等常规股票数据列。
补充说明
如果一定要继续使用pandas_datareader,可以通过yfinance作为数据源适配器,代码如下:
import pandas as pd import pandas_datareader.data as pdr import yfinance as yf import datetime as dt # 覆盖pandas_datareader的Yahoo数据源 yf.pdr_override() start_date = '2021-04-15' end_date = '2023-04-14' df = pdr.get_data_yahoo('MSFT', start=start_date, end=end_date) print(df.head())
内容的提问来源于stack exchange,提问作者DEBANJAN PAL
相关产品推荐
相关产品推荐

