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

Pandas中使用.loc方法替换赋值时触发KeyError的问题咨询

解决.loc赋值时的KeyError问题

嘿,这个问题我之前也碰到过!你遇到的错误是因为fomc_events里的两个日期——2020-03-15和2008-03-16——在spy_daily的索引里根本找不到,而现在Pandas已经不允许你通过.loc给不存在的标签赋值了,所以才抛出这个KeyError。

大概率这两个日期是周末或者股市休市的节假日,所以spy_daily里没有对应的交易数据,自然索引里就没有这些日期。要解决这个问题,有两种常见的思路:

思路一:只对存在的日期赋值

先筛选出fomc_events和spy_daily索引的交集,也就是两边都存在的日期,再进行赋值操作:

# 找出两个索引的共同日期
valid_dates = fomc_events.index.intersection(spy_daily.index)
# 仅对有效日期执行赋值
spy_daily.loc[valid_dates, "FOMC"] = spy_daily.loc[valid_dates, "days_since_fomc"]

这种方法会直接忽略那些在spy_daily里不存在的FOMC事件日期,适合你只关心有交易数据的事件日的场景。

思路二:扩展索引包含缺失日期

如果你想保留所有FOMC事件的日期(哪怕当天没有交易数据),可以先扩展spy_daily的索引,把缺失的日期加进去,再进行赋值:

# 合并两个索引,将缺失的日期添加到spy_daily中
spy_daily = spy_daily.reindex(spy_daily.index.union(fomc_events.index))
# 现在可以正常执行赋值操作了
spy_daily.loc[fomc_events.index, "FOMC"] = spy_daily.loc[fomc_events.index, "days_since_fomc"]
# 可选:处理新增行的缺失值,比如用前向填充、后向填充或者删除缺失行
# spy_daily = spy_daily.ffill()

这种方法会在spy_daily中新增那些休市日期的行,对应的交易数据会是NaN,你可以根据需求后续处理这些缺失值。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.28 14:32:38