首页 > 解决方案 > 如何在数据框中查找日期时间值的上一行和下一行?

问题描述

我有一个数据框,其中包含带有日期时间列的事件。现在我想查找特定日期时间值的前一个和下一个事件行。有没有一种有效的方法来做到这一点?

我的数据框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(),但 for 周围...)

标签: pythonpandas

解决方案


检查与searchsorted

s=np.searchsorted(df.Datetime,time)

然后

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

推荐阅读