Вот код, который я придумал, он работает:
Код: Выделить всё
df['High time'] = price_frame - ( df.index.values - df['Bid'].rolling(window=price_frame).agg(lambda x: x.index.values[np.argmax(x.values)]) )
Спасибо
Я ожидаю более быстрого кода, если это возможно.
Изменить: пример< /h3>
У меня есть этот фрейм данных:
Код: Выделить всё
Timestamp Bid
0 2023-12-01 00:00:02.033000+00:00 1.26305
1 2023-12-01 00:00:05.974000+00:00 1.26306
2 2023-12-01 00:00:07.587000+00:00 1.26305
3 2023-12-01 00:00:07.689000+00:00 1.26306
4 2023-12-01 00:00:07.792000+00:00 1.26304
... ... ...
2383418 2024-01-04 23:59:36.774000+00:00 1.26810
2383419 2024-01-04 23:59:41.153000+00:00 1.26808
2383420 2024-01-04 23:59:41.256000+00:00 1.26808
2383421 2024-01-04 23:59:55.951000+00:00 1.26805
2383422 2024-01-04 23:59:58.573000+00:00 1.26807
Использование этот код:
Код: Выделить всё
df['High time'] = price_frame - ( df.index.values - df['Bid'].rolling(window=price_frame).agg(lambda x: x.index.values[np.argmax(x.values)]) )
Код: Выделить всё
Timestamp Bid High time
0 2023-12-01 00:00:02.033000+00:00 1.26305 NaN
1 2023-12-01 00:00:05.974000+00:00 1.26306 NaN
2 2023-12-01 00:00:07.587000+00:00 1.26305 NaN
3 2023-12-01 00:00:07.689000+00:00 1.26306 NaN
4 2023-12-01 00:00:07.792000+00:00 1.26304 NaN
... ... ... ...
2383418 2024-01-04 23:59:36.774000+00:00 1.26810 255.0
2383419 2024-01-04 23:59:41.153000+00:00 1.26808 254.0
2383420 2024-01-04 23:59:41.256000+00:00 1.26808 253.0
2383421 2024-01-04 23:59:55.951000+00:00 1.26805 252.0
2383422 2024-01-04 23:59:58.573000+00:00 1.26807 251.0
Подробнее здесь: https://stackoverflow.com/questions/777 ... ent-method
Мобильная версия