Как сделать resample в timeseries на основании изменении значения?
У меня есть timeseries Вот пример:
p
time
2017-01-03 09:30:00.083000-05:00 74.6100
2017-01-03 09:30:00.505000-05:00 74.9900
2017-01-03 09:30:05.469000-05:00 74.7919
2017-01-03 09:30:08.555000-05:00 74.5000
2017-01-03 09:30:10.927000-05:00 74.9000
Значения в столбце 'p' иногда не меняются при изменении 'time'. Я хочу сделать следующее: Алгоритм должен идти по DataFrame и:
- Если цена ('p') на следующем шаге такая же, как и на предыдущем - мы оставляем в DataFrame только первое значение.
- Если цена на следующем шаге изменилась по сравнению с предыдущим - мы записываем его в DataFrame
Получается, что мы делаем resample на основании изменения цены, но шаг изменения не имеет значения.
Помогите понять, как это сделать? Спасибо
Ответы (2 шт):
Автор решения: MaxU
→ Ссылка
Воспользуйтесь DataFrame.drop_duplicates():
df = df.drop_duplicates(subset=["p"], keep="first")
Автор решения: strawdog
→ Ссылка
Исходный df:
time P
2017-01-03 2020-02-11 09:30:00.083000-05:00 74.61
2017-01-03 2020-02-11 09:30:00.505000-05:00 74.99
2017-01-03 2020-02-11 09:30:05.469000-05:00 74.99
2017-01-03 2020-02-11 09:30:08.555000-05:00 74.50
2017-01-03 2020-02-11 09:30:10.927000-05:00 74.50
2017-01-03 2020-02-11 09:30:11.123000-05:00 74.90
-------
time datetime64[ns, pytz.FixedOffset(-300)]
P float64
убираем дубликаты по столбцу P:
df.drop_duplicates(['P'], inplace=True)
Получаем:
time P
2017-01-03 2020-02-11 09:30:00.083000-05:00 74.61
2017-01-03 2020-02-11 09:30:00.505000-05:00 74.99
2017-01-03 2020-02-11 09:30:08.555000-05:00 74.50
2017-01-03 2020-02-11 09:30:11.123000-05:00 74.90