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

Posted

技术标签:

【中文标题】如何将 timedelta 与 pandas df.query() 一起使用?【英文标题】:How to use timedelta with pandas df.query()? 【发布时间】:2020-06-05 03:40:05 【问题描述】:

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

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

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

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

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

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

【问题讨论】:

【参考方案1】:

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

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

【讨论】:

知道这是否仍然正确吗? 'eval' 文档至少顺便提到了日期时间:pandas.pydata.org/docs/user_guide/…

以上是关于如何将 timedelta 与 pandas df.query() 一起使用?的主要内容,如果未能解决你的问题,请参考以下文章

计算索引的 Pandas df timedelta

如何在转换 timedelta 变量时消除 pandas 中的错误?

在 pandas df 中查找 timedelta 对象的均值和标准差

通过在 pandas 中添加 timedelta 来添加时间列

通过在pandas中添加timedelta来添加时间列

pandas使用dataframe中的两列时间对象数据列作差生成时间差数据列将时间差(timedelta对象)与特定时间长度进行比较