python - 如何在数据框中查找日期时间值的上一行和下一行?
问题描述
我有一个数据框,其中包含带有日期时间列的事件。现在我想查找特定日期时间值的前一个和下一个事件行。有没有一种有效的方法来做到这一点?
我的数据框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 周围...)
解决方案
检查与searchsorted
s=np.searchsorted(df.Datetime,time)
然后
df.iloc[[s-1,s],:]
推荐阅读
- git - 在 Windows 上删除 Git 的缓存密码
- javascript - Angularjs - 在 ng-repeat 中 Md-select 中断
- javascript - Ant design - 有没有办法获得我实际使用的样式?
- vue.js - 使日期时间列在 Vue 表 2 中可排序
- java - 在链表中搜索对象变量
- r - 神经网络输出不一致
- asp.net-mvc - VSTS 部署不执行 Azure Web App 部署的包跳过规则
- cloudkit - CloudKit:Web 服务应用程序的适当安全角色
- amazon-web-services - Gulp AWS 访问被拒绝问题
- c - C中函数数组的参数传递/返回,