如何将 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() 一起使用?的主要内容,如果未能解决你的问题,请参考以下文章
如何在转换 timedelta 变量时消除 pandas 中的错误?
在 pandas df 中查找 timedelta 对象的均值和标准差
通过在 pandas 中添加 timedelta 来添加时间列
pandas使用dataframe中的两列时间对象数据列作差生成时间差数据列将时间差(timedelta对象)与特定时间长度进行比较