python - 按时间戳过滤数据框
问题描述
我有以下数据框df:
TimeStamp
2021-03-21 09:16:33
2021-03-21 09:17:06
2021-03-21 09:19:19
2021-04-13 12:20:32
2021-04-13 12:20:39
我想过滤数据框以仅获取过去 36 小时的交易;我尝试了以下代码,但我总是发现处理时间戳很麻烦。
import pandas as pd
from datetime import datetime
df = pd.read_excel(input_path)
now = datetime.now()
temp = df[now-df['TimeStamp'].astype('timedelta64[h]').iloc[-1] >= 24]
因此最终结果是:
TimeStamp
2021-04-13 12:20:32
2021-04-13 12:20:39
谢谢
解决方案
确保TimeStamp
已转换to_datetime()
,然后使用pd.Timedelta(hours=36)
:
df.TimeStamp = pd.to_datetime(TimeStamp)
df[df.TimeStamp > (now - pd.Timedelta(hours=36))]
或者,您可以加载 excel,parse_dates
这样您就不必手动转换为日期时间:df = pd.read_excel(input_path, parse_dates=['TimeStamp'])
推荐阅读
- angular - 如何将 httpService 返回的字典反序列化为 Angular Map?
- graphql - 我们应该在 Apollo Client 的情况下添加后端 graphql 模式吗?
- f# - 我可以在 F# 中使用可以访问类型本身的方法来扩充所有 DU 类型吗?
- c - GlobalAlloc(GMEM_ZEROINIT|GMEM_FIXED, 0) 会发生什么
- ios - 调用时未在地图视图上显示注释
- gnuplot - 对于具有大量数据的小图,gnuplot 中的线条样式变得不清楚
- r - 使用纬度和经度确定一条线的中间
- javascript - 如何从 Svelte 中的路由数组生成 sitemap.xml
- swiftui - ForEach 具有动态与静态范围
- jakarta-ee - 在 JAX-RS 中使用 Multipart/Form-Data 的实现方式无关