首页 > 解决方案 > 当边缘日期不在数据框中时,日期之间的 Pandas 日期索引 loc 会引发 KeyError

问题描述

我不明白为什么在日期索引上使用 loc 时出现 KeyError: Timestamp('...') 。

给定 df: dtypes are datetime64[ns], int, int,DATE1 is index

            DATE1    VALUE2  VALUE3
2021-08-20 00:00:00      11     424
2021-08-21 00:00:00      22     424
2021-08-22 00:00:00      33     424
2021-08-23 00:00:00      44     242

我正在尝试像这样在索引上使用 loc :

start_date = date(2021-08-20)
end_date = date(2021-08-23)
df = df.loc[start_date:end_date]

这工作正常。我得到了 4 条记录。但是,当我这样做时:

start_date = date(2021-08-20)
end_date = date(2021-08-24) #end_date is higher than values in dataframe
df = df.loc[start_date:end_date]

我收到 KeyError: KeyError: Timestamp('2021-08-24 00:00:00')。有人可以指出我如何解决这个问题吗?

标签: pythonpandasdataframepandas-loc

解决方案


您使用的是哪个熊猫版本?这对我来说可以:

start_date = pd.to_datetime('2021-08-20')
end_date = pd.to_datetime('2121-08-24')
df.loc[start_date:end_date]

输出:

            VALUE2  VALUE3
DATE1                     
2021-08-20      11     424
2021-08-21      22     424
2021-08-22      33     424
2021-08-23      44     242

推荐阅读