使用yahoo_fin/yfinance获取雅虎财报数据遇空DataFrame及KeyError问题
解决雅虎财经数据获取的两个问题:空DataFrame与KeyError
一、yahoo_fin返回空资产负债表DataFrame的处理
- 核对股票代码:必须用雅虎财经认可的标准格式,比如美股带正确后缀(BRK.B而非BRK-B)、港股加.HK、A股加.SS/.SZ,代码错误会直接拿不到数据。
- 强制刷新缓存:yahoo_fin默认会缓存旧数据,调用时加
refresh=True参数强制拉取最新数据:from yahoo_fin.stock_info import get_balance_sheet balance_sheet = get_balance_sheet("AAPL", refresh=True) - 验证网页数据:先去雅虎财经网页搜索对应股票,确认它有没有公开的资产负债表数据——部分小众股票或未上市公司根本没收录财报,自然返回空表。
二、yfinance报KeyError: 'regularMarketOpen'的解决
这个错误是因为雅虎财经API字段更新,旧版yfinance没跟上兼容,按下面步骤处理:
- 升级到最新版yfinance:执行命令
pip install --upgrade yfinance - 直接调用专属财报方法:别碰容易触发字段校验的
stock.info,直接用专门的财报接口拿数据:import yfinance as yf stock = yf.Ticker("AAPL") # 获取年度资产负债表 annual_balance = stock.balance_sheet # 要季报的话用这个 quarterly_balance = stock.quarterly_balance_sheet - 应急临时方案:如果升级后还是有问题,用
get_balance_sheet()方法,它会跳过部分字段校验:balance_sheet = stock.get_balance_sheet(freq="annual")
内容的提问来源于stack exchange,提问作者jrpars1
相关产品推荐
相关产品推荐

