如何将timedelta与pandas df.query()一起使用?

blt*_*yro 5 python datetime timedelta dataframe pandas

我希望能够从用户或文件中传入文本来过滤熊猫,这似乎查询是处理它的最佳方式。但是,我有一个日期时间索引,似乎无法找到使用 timedeltas 的方法。我知道我可以用 > 或 < 来过滤日期

query_string = 'index < datetime.datetime(2020, 2, 20, 11, 8, 19, 615268)'
df.query(queryString)

Run Code Online (Sandbox Code Playgroud)

date = datetime.datetime.now()
query_string = 'index < @date'
df.query(queryString)
Run Code Online (Sandbox Code Playgroud)

我想要做的是获取相对日期范围,例如获取条目的最后 10 秒

date = datetime.now()
query_string = 'index > @date - datetime.timedelta(seconds=10)'
df.query(query_string)
Run Code Online (Sandbox Code Playgroud)

这失败了,我似乎无法找到一种方法来执行诸如过滤与时间戳相关的任何内容之类的操作。有没有其他方法可以格式化它,以便我可以使用 df.query() 从日期中添加/减去时间?

e1i*_*i45 1

查询不支持timedelta(在Pandas 1.0.5版本中检查)。您可以使用以下方法解决它:

df[df['index'] >= datetime.now() - datetime.timedelta(10, 'S')]
Run Code Online (Sandbox Code Playgroud)