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

pandas使用.loc访问datetime索引时部分日期触发KeyError

Pandas Datetime索引KeyError问题原因说明

以下是该问题的所有可能触发原因及验证、修复方案:

  • 索引未排序
    pandas对DatetimeIndex使用日期字符串做部分匹配筛选时,要求索引处于升序排序状态。若执行set_index('start time CA')后未对索引排序,部分版本的pandas仅支持精确值匹配,当索引中的2021-09-20记录带有时分秒时,就会触发KeyError。
    验证逻辑:执行print(temp.index.is_monotonic_increasing),返回False即可确认该问题,修复方式为执行temp.sort_index(inplace=True)。
  • 时区不匹配
    若start time CA字段为带时区的datetime类型,你传入loc的'2021-09-20'字符串会被默认解析为无时区的datetime对象,二者时区不一致时无法匹配到对应记录。
    验证逻辑:执行print(temp.index.tz)查看索引时区,统一筛选参数和索引的时区即可解决。
  • 索引实际值与显示值不一致
    pandas展示datetime类型数据时会默认截断时分秒,肉眼看到的2021-09-20记录,实际索引值可能是带时区的跨天时间、或刚好落在2021-09-19最后一毫秒的时间。
    验证逻辑:执行print(temp.index[temp.index.date == pd.to_datetime('2021-09-20').date]),确认是否存在对应日期的真实索引值。
  • 旧版本pandas兼容性bug
    1.1.0以下版本的pandas存在DatetimeIndex部分匹配的已知缺陷,索引存在重复值、空值时会偶发合法日期字符串无法匹配的问题。
    验证逻辑:执行print(pd.__version__)查看pandas版本,升级到1.2.0及以上版本即可修复。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 15:18:03