【发布时间】:2020-11-26 04:08:56
【问题描述】:
我在 pandas 数据框中有两年的传感器数据。该指数是一个时间序列。看起来像这样:
temp1 overtemp time_to_overtemp
datetime
2019-01-02 09:31:00 305.96
2019-01-02 09:32:00 305.98
2019-01-02 09:33:00 305.70
2019-01-02 09:34:00 305.30
2019-01-02 09:35:00 306.88
我想要做的是循环时间序列以填充“overtemp”和“time_to_overtemp”列。如果未来两周内任何时间的温度数据增加超过 2%,则需要为“overtemp”分配 1 . "time_to_overtemp" 需要显示下一个 >2% 读数的时间,如果它存在于接下来的两周内。如果温度在接下来的两周内显示在 2% 以内,则应为两列分配 0。
例如 2019-01-02 09:31:00 应该查看接下来两周的温度数据,并在两列中输入 0,因为该时间段内的所有数据都在值的 2% 以内。 2020-01-02 09:35:00 的过热值应该是 1,因为一周后该值增加了 5%。 time_to_overtemp 值应指示 7 天 2 小时 38 分钟,因为那是发生过热的时间。
我正在使用 iterrows 成功地做一些数学题:
for datetime, row in df.iterrows():
但它需要永远。而且我根本不知道如何进行时间迭代和计算。
我已经做了其他标签:
df['overtemp'] = np.select([df['temp1']<305, df['temp1']>305], [1,0])
我猜这将过程向量化?它确实比迭代快得多。但我不知道如何实现日期时间+两周部分。
【问题讨论】:
标签: python pandas time-series