【发布时间】:2015-12-12 11:42:17
【问题描述】:
我设置了以下 pandas 数据框以从 csv 导入:
df = pd.read_csv('file_path',
parse_dates={'timestamp': ['Date','Time']},
index_col='timestamp',
usecols=['Date', 'Time', 'X'],)
所以它最终有一个日期时间作为索引和一个 int64 对象“X”作为值。
我的数据看起来像这样,有两列:
X
timestamp
2015-08-25 16:52:10 95
2015-08-25 16:52:12 84
2015-08-25 16:52:14 86
2015-08-25 16:52:16 84
2015-08-25 16:52:18 85
2015-08-25 16:52:20 86
2015-08-25 16:52:22 84
2015-08-25 16:52:24 95
2015-08-25 16:52:28 95
2015-08-25 16:52:48 80
2015-08-25 16:52:50 85
2015-08-25 16:52:52 85
2015-08-25 16:52:54 84
2015-08-25 16:52:56 85
2015-08-25 16:52:58 86
2015-08-25 16:53:00 85
2015-08-25 16:53:02 85
2015-08-25 16:53:04 85
2015-08-25 16:53:06 86
2015-08-25 16:53:08 85
2015-08-25 16:53:10 85
但是,间隔并不总是一致的。有时我的数据点相隔超过两秒(即 16:52:28-16:52:48)。
我想要的值是 X = [84, 86] 但仅当它们出现至少连续 10 秒时。
所以在我的数据框中,我希望 python 在 16:52:12-22 和 16:52:50-16:53:10 仅返回 2 个计数。
如何告诉 python 不将 16:52:50-16:53:10 计为 2?我可以为特定的时间间隔编写代码,但是如何将“至少 Y 连续秒”翻译成 python?
提前致谢。
编辑:澄清一下,我的首选输出是计数事件 Y 在样本集中发生的次数。当 X 具有至少连续 10 秒的值时,事件 Y 发生。因此,例如,如果 X 至少连续 10 秒处于 84-86,那么我希望它是 1。
【问题讨论】:
-
您能否提供此示例所需的输出?这样可以更清楚地说明问题。
-
感谢您的输入,会做的
-
抱歉,有一点我还不清楚。 “84-86”是什么意思。如果我们假设 X 的值至少连续 10 秒保持不变,这很简单。但是您想检查它是否在 10 秒内保持间隔?
-
@RomainX 是的,就是这样。我想检查它是否保持在 84-86 范围内至少连续 10 秒
-
In this case, 10 continuous seconds means 10 consecutive seconds.这是循环的。你是说至少 10 秒的时间段,采样率是每 2 秒一次,没有中断?