使用yfinance获取动态股票代码行业数据时遇KeyError: 'sector'求助
问题原因及解决办法
为什么会触发KeyError: 'sector'
出现这个错误的核心原因是部分股票代码对应的标的在Yahoo Finance的数据库里没有sector(行业)字段,常见场景包括:
- 标的是场外交易股、新上市未完善数据的股票,或者已退市的股票
- 部分海外小众标的的信息字段不全,Yahoo Finance未收录其行业分类
- 少数情况下,yfinance请求返回的
info字典因网络或接口限制,字段不完整(但你能正常获取beta,这种概率较低)
修复代码的几种方案
方案1:用字典get()方法避免报错
直接用get()方法获取字段,同时指定默认值,这样即便没有sector也不会抛出错误,而是返回你设定的默认内容:
import yfinance as yf sector_list = [] for tik in ticker_list: ticker = yf.Ticker(tik) # 用get方法,不存在则返回"未知行业" sector = ticker.info.get('sector', '未知行业') sector_list.append(sector) sector_list
方案2:添加异常捕获,记录出错的股票代码
如果需要排查哪些股票没有行业数据,可以捕获KeyError并记录对应的代码:
import yfinance as yf sector_list = [] error_tickers = [] for tik in ticker_list: try: ticker = yf.Ticker(tik) sector = ticker.info['sector'] sector_list.append(sector) except KeyError: sector_list.append('未知行业') error_tickers.append(tik) print("无行业数据的股票代码:", error_tickers) print(sector_list)
方案3:先验证info是否包含sector字段
提前判断字段是否存在再取值,逻辑和get()方法类似,但更直观:
import yfinance as yf sector_list = [] for tik in ticker_list: ticker = yf.Ticker(tik) info = ticker.info if 'sector' in info: sector_list.append(info['sector']) else: sector_list.append('未知行业') sector_list
内容的提问来源于stack exchange,提问作者cwb74
相关产品推荐
相关产品推荐

