使用getloc ffill在python熊猫数据框中搜索日期为TIme之前的日期时出现KeyError

时间:2020-02-09 08:28:38

标签: python pandas dataframe

我有以下数据框。我想使用代码片段中提到的get_loc ffill参数获取最近的日期。 数据框:

Date Time,Close,High,Low,Open,Volume
2020-01-02 22:45:00,326.75,329.3,326.5,329.3,0.0
2020-01-02 22:50:00,328.0606,330.0708,325.6666,326.7106,9178.0
2020-01-02 22:55:00,327.4,328.3,327.4,328.05,1035.0
...
2020-02-07 04:50:00,372.05,375.0,372.0,373.0,4936.0
2020-02-07 04:55:00,372.1156,373.3588,370.3559,372.3656,7548.0

代码段

df_colname = 'Date Time'
pandas_datetime_colname = 'Pandas Date Time'
df[pandas_datetime_colname] = pd.to_datetime(df[df_colname])
df.set_index(pandas_datetime_colname, inplace=True)
dt = pd.to_datetime(inputdatetime)
idx = df.index.get_loc(dt, 'ffill')
print("Date Time: " + str(inputdatetime) + " :idx " + str(idx))
df.reset_index(inplace=True)

当我提供日期为2020-02-02 22:50:00时,这将返回正确的日期2020-01-02 22:45:00,但是当我给第一个日期之前的日期时,会出现键盘错误 KeyError:Timestamp('2019-12-20 22:45:00') 当我在数据框的最后一个日期之后给出日期时,我也没有收到错误

我仔细阅读了文档,但找不到为什么仅在PRIOR日期出现错误。我希望得到某种None对象

1 个答案:

答案 0 :(得分:0)

来自docs

ffill: find the PREVIOUS index value if no exact match.

在索引中提供没有先前日期时间的日期时间,将导致错误,因为它给出了PREVIOUS索引值中最接近的匹配项。由于没有这样的索引值,因此会引发错误。

我相信您要寻找的是nearest参数,而不是ffill

nearest: use the NEAREST index value if no exact match. Tied distances are broken by preferring the larger index value.