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
解决步骤
确认DataFrame的列名
执行以下代码查看当前sp500的所有列,排查列名是否符合预期:print(sp500.columns.tolist())安全删除列(避免KeyError)
若不确定列是否存在,使用drop方法并设置errors='ignore',不存在的列会被自动跳过:sp500 = sp500.drop(["Dividends", "Stock Splits"], axis=1, errors="ignore")检查数据获取环节
若从yfinance拉取数据,确保调用接口时包含股息和拆股数据。示例:import yfinance as yf sp500 = yf.Ticker("^GSPC").history(period="max", actions=True)参数
actions=True会返回Dividends和Stock Splits列,确保数据加载完整。排查代码执行顺序
检查之前的单元格是否对sp500做过列删除、筛选操作(比如sp500 = sp500[['Open', 'Close']]),导致目标列被提前移除。
内容的提问来源于stack exchange,提问作者Joke
相关产品推荐
相关产品推荐

