寻找第一次出现的地方
从当前时间到每一行直到日期结束
值超过某个阈值的地方
thresh = 0.10
在该窗口内为分钟创建数据框列
输入
timestamp date value endofdaytime 2018-03-11 13:03:00 2018-03-11 0.03 2018-03-11 16:29:52 2018-03-11 13:08:00 2018-03-11 0.00 2018-03-11 16:29:52 2018-03-11 15:22:00 2018-03-11 0.11 2018-03-11 16:29:52 2018-03-11 16:03:00 2018-03-11 0.03 2018-03-11 16:29:52 2018-03-11 16:29:52 2018-03-11 0.03 2018-03-11 16:29:52 2018-03-12 13:03:00 2018-03-12 0.03 2018-03-12 16:29:59 2018-03-12 13:08:00 2018-03-12 0.00 2018-03-12 16:29:59 2018-03-12 16:03:00 2018-03-12 0.03 2018-03-12 16:29:59 2018-03-12 16:29:59 2018-03-12 0.12 2018-03-12 16:29:59
输出
timestamp date value endofdaytime min2thresh thresh 2018-03-11 12:34:00 2018-03-11 0.22 2018-03-11 16:29:52 0.00 0.11 2018-03-11 13:03:00 2018-03-11 0.00 2018-03-11 16:29:52 0.00 0.11 2018-03-11 13:08:00 2018-03-11 0.03 2018-03-11 16:29:52 0.03 0.11 2018-03-11 15:22:00 2018-03-11 0.11 2018-03-11 16:29:52 0.04 0.12 2018-03-11 16:03:00 2018-03-11 0.04 2018-03-11 16:29:52 0.12 0.12 2018-03-11 16:29:52 2018-03-11 0.12 2018-03-11 16:29:52 NaN NaN 2018-03-12 13:03:00 2018-03-12 0.03 2018-03-12 16:29:59 0.00 0.13 2018-03-12 13:08:00 2018-03-12 0.00 2018-03-12 16:29:59 0.00 0.13 2018-03-12 16:03:00 2018-03-12 0.03 2018-03-12 16:29:59 0.03 0.13 2018-03-12 16:29:59 2018-03-12 0.13 2018-03-12 16:29:59 NaN NaN
此代码将为我提供直到日期结束的时间。
df['min2thresh'] = df.groupby('date')['value'].transform(lambda x: x[::-1].cummin()[::-1])
但是只需要最小值,直到超过阈值。 所以我认为我需要在
中更改-1[::-1]
找到该阈值的第一个位置的方法。也许。
[:: df.loc[(df["value"] >= thresh)]]
那应该是
df['min2thresh'] = df.groupby('date')['value'].transform(lambda x: x[::df.loc[(df["value"] >= thresh)]].cummin()[::df.loc[(df["value"] >= thresh)]])
但是由于“无法使用这些索引器在...上进行切片索引”而崩溃。