从值获取子数据帧

2024-05-13 17:02:15 发布

您现在位置:Python中文网/ 问答频道 /正文

我使用以下格式处理timeseries数据:

[timestamp][rain value]

我想在timeseries数据中计算降雨事件,我们将降雨事件定义为主数据帧的子数据帧,其中包含零降雨值之间的非零值

我通过在第一个非零值之前获得降雨值的索引,成功地获得了数据帧的开始:

^{pr2}$

我搞不懂怎么找到结局。我在找一些函数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小时零雨,这是否正确。在


Tags: 数据代码df定义事件startendvalues