我有以下数据帧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))]
或者,您可以用parse_dates
加载excel,这样您就不必手动转换为日期时间:df = pd.read_excel(input_path, parse_dates=['TimeStamp'])