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

使用Timestamp定位Pandas索引时出现KeyError问题求助

解决方法

首先,你的代码错误根源是用错了索引访问方式:df[xdat]是按列名提取列,但你要访问的是行索引对应的数值,应该用.loc来定位索引和列。

具体修正步骤:

  • 替换访问方式:把df[xdat]['x']改成df.loc[xdat, 'x'],这是Pandas中按索引+列名取值的标准写法。

  • 检查索引匹配性:如果还是报错,大概率是生成的Timestamp和df索引的时间精度不匹配,比如df索引是datetime.date类型,或者带时分秒的Timestamp和你生成的纯日期Timestamp有差异。可以试试把xdat转成和索引一致的格式,比如:

    x = df.loc[xdat.date(), 'x']  # 如果索引是date类型
    # 或者先把df索引转为标准DatetimeIndex:
    df.index = pd.DatetimeIndex(df.index)
    
  • 处理缺失日期:如果date_range里的某些日期不存在于df索引中,会触发KeyError。可以先筛选出存在的日期再循环:

    date_list = pd.date_range(start="2040/01/01", end="2044/07/01", freq="MS")
    valid_dates = [d for d in date_list if d in df.index]
    for xdat in valid_dates:
        x = df.loc[xdat, 'x']
    
  • 更高效的批量取值:没必要循环,直接用df.loc[date_list, 'x']就能一次性取出所有对应日期的x列值,不存在的日期会显示NaN,比循环更高效。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.09 00:50:46