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

Pandas按Timestamp索引取值报KeyError,值与类型均匹配如何解决

问题原因及解决方法

核心常见原因

  • 原因1:误用DataFrame取值语法,DataFrame[键]默认匹配列名而非行索引,你要按行索引取值必须使用.loc方法,这是该报错最高发的诱因。
  • 原因2:两个Timestamp的时区信息不一致,打印默认不会展示时区属性,看起来值相同实际不属于同一个时间体系,例如一个是无时区的朴素时间,另一个是带UTC时区的时间。
  • 原因3:时间精度不一致,两个Timestamp的纳秒级底层数值有差异,打印时仅展示到秒级,视觉上无法区分差异。

排查及解决步骤

  1. 优先修正取值语法,将代码中的self.calendar_month[index]替换为self.calendar_month.loc[index],测试是否解决问题。
  2. 若仍报错,检查时区一致性:
    执行以下代码输出时区信息:
    print(self.calendar_month.index.tz)
    print(index.tz)
    
    若时区不一致,统一二者时区即可,例如将带时区的时间转为朴素时间:
    # 统一去掉时区
    index = index.tz_localize(None)
    self.calendar_month.index = self.calendar_month.index.tz_localize(None)
    
  3. 若时区无异常,检查精度一致性:
    执行以下代码输出时间的底层整数表示:
    print(self.calendar_month.index[0].value)
    print(index.value)
    
    若数值不同,统一二者精度即可,例如都向下取整到秒级:
    index = index.floor('S')
    self.calendar_month.index = self.calendar_month.index.floor('S')
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 12:15:05