我使用以下格式处理时间序列数据:
[timestamp][rain value]
我想计算时间序列数据中的降雨事件,我们将降雨事件定义为主数据框的子数据框,其中包含零降雨值之间的非零值
我设法通过获取第一个非零值之前的降雨量值索引来获取数据帧的开头:
start = df.rain.values.nonzero()[0][0] - 1
cur = df[start:]
我无法弄清楚如何找到目的。我正在寻找一些函数zero():
end=cur.rain.values.zero()[0][0]
在rain列中找到下一个零值,并将其标记为我的子数据框的结尾
另外,因为我的数据以15分钟的间隔进行采样,这意味着暂时平静15分钟会给我两个降雨事件而不是一个,这实际上是不正确的。这意味着我想定义一些时间段 - 例如6小时 - 来分隔降雨事件。
我在想什么(但由于我无法找到子网框的end
而无法执行),在伪代码中:
start = df.rain.values.nonzero()[0][0] - 1
cur = df[start:]
end=cur.rain.values.zero()[0][0]
temp = df[end:]
z = temp.rain.values.nonzero()[0][0] - 1
if timedelta (z-end) >=6hrs:
end stays as endpoint of cur
else:
z is new endpoint, find next nonzero to again check
所以我想我的问题是,如果我不想遍历所有行,我如何找到我的子数据帧的end
我正在使用我的伪代码来定义降雨事件的结束,例如,6小时0降雨。