Я хотел бы установить для всех значений некоторое значение (скажем, 999), которое происходит в течение некоторого периода времени (скажем, 1 час) любого значения, превышающего некоторый порог (скажем, 7). Мне повезло с неудобными не векторизованными подходами, но должен быть лучший, pandasti c способ сделать это ...
Пример:
Настройка случайного фрейм данных:
hr_rng = pd.date_range(start='7/1/2014 00:00:00', end='7/1/2014 10:00:00', freq='H')
df = pd.DataFrame(hr_rng, columns=['date_time'])
df.set_index(pd.DatetimeIndex(df['date_time']),inplace=True)
df['val0']=np.random.randint(1, 10, df.shape[0])
Случайный вывод:
date_time val0
date_time
2014-07-01 00:00:00 2014-07-01 00:00:00 4
2014-07-01 01:00:00 2014-07-01 01:00:00 8
2014-07-01 02:00:00 2014-07-01 02:00:00 4
2014-07-01 03:00:00 2014-07-01 03:00:00 7
2014-07-01 04:00:00 2014-07-01 04:00:00 2
2014-07-01 05:00:00 2014-07-01 05:00:00 4
2014-07-01 06:00:00 2014-07-01 06:00:00 4
2014-07-01 07:00:00 2014-07-01 07:00:00 9
2014-07-01 08:00:00 2014-07-01 08:00:00 1
2014-07-01 09:00:00 2014-07-01 09:00:00 9
2014-07-01 10:00:00 2014-07-01 10:00:00 5
Я бы хотел получить в ответ следующее:
date_time val0
date_time
2014-07-01 00:00:00 2014-07-01 00:00:00 999
2014-07-01 01:00:00 2014-07-01 01:00:00 999
2014-07-01 02:00:00 2014-07-01 02:00:00 999
2014-07-01 03:00:00 2014-07-01 03:00:00 7
2014-07-01 04:00:00 2014-07-01 04:00:00 2
2014-07-01 05:00:00 2014-07-01 05:00:00 4
2014-07-01 06:00:00 2014-07-01 06:00:00 999
2014-07-01 07:00:00 2014-07-01 07:00:00 999
2014-07-01 08:00:00 2014-07-01 08:00:00 999
2014-07-01 09:00:00 2014-07-01 09:00:00 999
2014-07-01 10:00:00 2014-07-01 10:00:00 999
Другой случайный пример:
date_time val0
date_time
2014-07-01 00:00:00 2014-07-01 00:00:00 5
2014-07-01 01:00:00 2014-07-01 01:00:00 6
2014-07-01 02:00:00 2014-07-01 02:00:00 3
2014-07-01 03:00:00 2014-07-01 03:00:00 2
2014-07-01 04:00:00 2014-07-01 04:00:00 9
2014-07-01 05:00:00 2014-07-01 05:00:00 7
2014-07-01 06:00:00 2014-07-01 06:00:00 6
2014-07-01 07:00:00 2014-07-01 07:00:00 8
2014-07-01 08:00:00 2014-07-01 08:00:00 6
2014-07-01 09:00:00 2014-07-01 09:00:00 7
2014-07-01 10:00:00 2014-07-01 10:00:00 3
Должно стать таким:
date_time val0
date_time
2014-07-01 00:00:00 2014-07-01 00:00:00 5
2014-07-01 01:00:00 2014-07-01 01:00:00 6
2014-07-01 02:00:00 2014-07-01 02:00:00 3
2014-07-01 03:00:00 2014-07-01 03:00:00 999
2014-07-01 04:00:00 2014-07-01 04:00:00 999
2014-07-01 05:00:00 2014-07-01 05:00:00 999
2014-07-01 06:00:00 2014-07-01 06:00:00 999
2014-07-01 07:00:00 2014-07-01 07:00:00 999
2014-07-01 08:00:00 2014-07-01 08:00:00 999
2014-07-01 09:00:00 2014-07-01 09:00:00 999
2014-07-01 10:00:00 2014-07-01 10:00:00 999