简体   繁体   English

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

[英]How to use timedelta with pandas df.query()?

I would like to be able to pass in text from a user or file to filter pandas, which seems like query is the best way to handle it.我希望能够从用户或文件中传入文本来过滤熊猫,这似乎查询是处理它的最佳方式。 However, I have a datetime index and can't seem to figure out a way to use timedeltas.但是,我有一个日期时间索引,似乎无法找到使用 timedeltas 的方法。 I know I can filter dates with > or < like我知道我可以用 > 或 < 来过滤日期

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

and

date = datetime.datetime.now()
query_string = 'index < @date'
df.query(queryString)

What I want to do is get a relative date range like getting the last 10 seconds of entries我想要做的是获取相对日期范围,例如获取条目的最后 10 秒

date = datetime.now()
query_string = 'index > @date - datetime.timedelta(seconds=10)'
df.query(query_string)

This fails, and I can't seem to find a way to do something like filter anything relative to a timestamp.这失败了,我似乎无法找到一种方法来执行诸如过滤与时间戳相关的任何内容之类的操作。 Is there any other way to format it so I can add/subtract a time from a date using df.query()?有没有其他方法可以格式化它,以便我可以使用 df.query() 从日期中添加/减去时间?

Query does not support timedelta (checked in version Pandas 1.0.5).查询不支持 timedelta(在 Pandas 1.0.5 版本中检查)。 You can work around it using:您可以使用以下方法解决它:

df[df['index'] >= datetime.now() - datetime.timedelta(10, 'S')]

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM