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

Python3的JupyterLab中执行del语句触发KeyError: 'Dividends'求助

KeyError: 'Dividends' 排查与解决

问题重现

执行以下代码时触发KeyError: 'Dividends':

del sp500["Dividends"]
del sp500["Stock Splits"]

错误提示片段:

# there was no match, this call should raise the appropriate

环境:Anaconda JupyterLab(Python3),已尝试删除重写代码、搜索方案、重启内核/Anaconda、重装yfinance,问题未解决。

核心原因

KeyError直接说明DataFrame sp500中不存在名为'Dividends'的列,常见触发场景:

  • 从yfinance获取数据时,未指定包含股息/拆股数据的参数,返回的DataFrame默认无这些列
  • 之前的代码已删除过这两列,或对sp500做过列筛选操作,导致目标列丢失
  • 列名存在大小写/空格差异,比如实际列名是dividends而非Dividends

解决步骤

  1. 确认DataFrame的列名
    执行以下代码查看当前sp500的所有列,排查列名是否符合预期:

    print(sp500.columns.tolist())
    
  2. 安全删除列(避免KeyError)
    若不确定列是否存在,使用drop方法并设置errors='ignore',不存在的列会被自动跳过:

    sp500 = sp500.drop(["Dividends", "Stock Splits"], axis=1, errors="ignore")
    
  3. 检查数据获取环节
    若从yfinance拉取数据,确保调用接口时包含股息和拆股数据。示例:

    import yfinance as yf
    sp500 = yf.Ticker("^GSPC").history(period="max", actions=True)
    

    参数actions=True会返回Dividends和Stock Splits列,确保数据加载完整。

  4. 排查代码执行顺序
    检查之前的单元格是否对sp500做过列删除、筛选操作(比如sp500 = sp500[['Open', 'Close']]),导致目标列被提前移除。

内容的提问来源于stack exchange,提问作者Joke

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.24 11:49:58