我有一个数据框,其中包含带有datetime列的事件。现在,我想为特定的日期时间值查找上一个和下一个事件行。有没有一种有效的方法可以做到这一点?
我的数据框df
如下:
Datetime Event ...
0 2019-04-01 00:00:00 x ...
1 2019-04-01 07:16:54 y
2 2019-04-01 07:17:22 z
3 2019-04-01 07:18:31 a
4 2019-04-01 07:22:23 b
5 2019-04-01 07:23:24 c..
我尝试过的是这个
time = pd.to_datetime('2019-04-01 07:20:02')
prev_row = df[df['Datetime'] < time].tail(1)
next_row = df[df['Datetime'] > time].head(1)
这将使我获得上一行和下一行,但是我在徘徊,是否有一种更有效的方法(类似于.between()
,但适用于...)
答案 0 :(得分:3)
使用searchsorted
s=np.searchsorted(df.Datetime,time)
然后
df.iloc[[s-1,s],:]