熊猫分钟数据查找-从现在到第一次出现(阈值)状况之间的第一个本地分钟

时间:2018-07-06 13:02:18

标签: python pandas transform

寻找第一次出现的地方
从当前时间到每一行直到日期结束
值超过某个阈值的地方

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)]])

但是由于“无法使用这些索引器在...上进行切片索引”而崩溃。

0 个答案:

没有答案