如何在数据框中查找日期时间值的上一行和下一行?

时间:2019-07-02 14:56:54

标签: python pandas

我有一个数据框,其中包含带有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(),但适用于...)

1 个答案:

答案 0 :(得分:3)

使用searchsorted

进行检查
s=np.searchsorted(df.Datetime,time)

然后

df.iloc[[s-1,s],:]