微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何检测出现在比指定间隔更大的间隔上的记录?

如何解决如何检测出现在比指定间隔更大的间隔上的记录?

我有以下熊猫数据帧:

Col1 Date        Time
A    29/03/2019  00:00
A    29/03/2019  04:00
A    29/03/2019  08:00
A    29/03/2019  12:00
A    29/03/2019  16:00
A    29/03/2019  20:00
A    30/03/2019  00:00
A    30/03/2019  08:00
A    30/03/2019  12:00
A    30/03/2019  16:00
A    30/03/2019  20:00
A    31/03/2019  04:00

基本上,数据每隔 4 小时提供一次。我需要返回不符合此条件的行。

预期输出

A    30/03/2019  08:00
A    31/03/2019  04:00

这两行缺少中间记录。

我该怎么做?

解决方法

尝试创建一个布尔索引来确定行之间的差异超过 4 小时的位置。

通过将 DateTime 相加来创建日期时间列,diff 以获取行之间的差异,然后与 TimeDelta 进行比较。

修改 TimeDelta (pd.to_timedelta("4:00:00")) 以更改所需的间隔。

import pandas as pd

df = pd.DataFrame({'Col1': {0: 'A',1: 'A',2: 'A',3: 'A',4: 'A',5: 'A',6: 'A',7: 'A',8: 'A',9: 'A',10: 'A',11: 'A'},'Date': {0: '29/03/2019',1: '29/03/2019',2: '29/03/2019',3: '29/03/2019',4: '29/03/2019',5: '29/03/2019',6: '30/03/2019',7: '30/03/2019',8: '30/03/2019',9: '30/03/2019',10: '30/03/2019',11: '31/03/2019'},'Time': {0: '00:00',1: '04:00',2: '08:00',3: '12:00',4: '16:00',5: '20:00',6: '00:00',7: '08:00',8: '12:00',9: '16:00',10: '20:00',11: '04:00'}})

# Create Index
m = pd.to_datetime(
    df['Date'] + df['Time'],format='%d/%m/%Y%H:%M'
).diff() > pd.to_timedelta("4:00:00")

# Use Index to Filter DF
out = df[m]

# For Display
print(out)

out

   Col1        Date   Time
7     A  30/03/2019  08:00
11    A  31/03/2019  04:00

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?