首页 > 解决方案 > df 查询 Timedelta 列,其中持续时间 <= 1 小时

问题描述

#query that fetches all items where duration <= 1 hours
df = df[(df['Td'].dt.total_seconds() <= 3600) & (df['Td'].dt.total_seconds() >= 0)]

例如,上面的查询排除了开始01/01/20 23:30:00和结束的项目01/02/20 00:18:00,但是他们需要被包括在内!

如果我在上面的查询中添加附加条件(df['Td'].dt.total_seconds() >= -3600),它会开始包括诸如pd.Timedelta(days=-1, hours=23).

我如何确保我获取的唯一项目在 1 小时内,而不管pd.Timedelta(days=-1, hours=23)评估为的日期变化如何hours=-1

例子:

-3600 <= pd.Timedelta(days=-1, hours=23).total_seconds() <= 3600 True

我不希望包括在内,因为从前一天过去了 23 小时而不是 -3600 秒/-1 小时。

标签: pythonpandas

解决方案


最终使用了unix时间戳。从给定的 timedelta 中减去一个纪元开始的 timedelta 对象,并将结果除以 60 以获得分钟。


推荐阅读