You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.08 02:05:20