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

Timestamp索引下datetime类型查找失效问题咨询

pandas中DatetimeIndex与datetime.date对象索引查找的疑问

1. 构造object类型索引的DataFrame

先创建一个以datetime.date对象为索引的DataFrame df0,其索引类型为object:

import datetime
import pandas as pd

d0 = datetime.date(2024, 5, 5)
d1 = datetime.date(2024, 5, 10)
df0 = pd.DataFrame({"a": [1, 2], "b": [10, None], "c": list("xy")}, index=[d0, d1])
print(df0.index)
# 输出:Index([2024-05-05, 2024-05-10], dtype='object')

此时用date对象df0.loc[d0]可以正常获取数据,但用字符串df0.loc[str(d0)]或pd.Timestamp(d0)会触发KeyError,这个表现符合预期——因为object索引要求精确匹配类型。

2. 转为DatetimeIndex后的索引查找问题

将df0重新索引为DatetimeIndex类型得到df1:

df1 = df0.reindex(pd.date_range(d0, d1))
print(df1.index)
# 输出:DatetimeIndex(['2024-05-05', '2024-05-06', '2024-05-07', '2024-05-08',
#                '2024-05-09', '2024-05-10'],
#               dtype='datetime64[ns]', freq='D')

df1的索引类型为datetime64[ns],此时用pd.Timestamp(d0)和字符串df1.loc[str(d0)]都能正常查找数据,但用date对象df1.loc[d0]却触发KeyError。

疑问解答

这个现象属于已知问题,对应的GitHub issue已提交。从pandas的设计逻辑来说,DatetimeIndex本应支持通过datetime.date对象进行索引查找(自动转换为对应的Timestamp),但当前版本中存在这一匹配失败的情况,属于待确认修复的bug。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.23 12:12:33