У меня есть dataframe (назовем его «best_trades»), который, например следующим образом:питона панды - functionning из GroupBy
exit_time netgain_by_MAE
2000-02-01 07:00:00 2000-02-01 11:30:00 2.083333
2000-02-01 08:30:00 2000-02-01 11:30:00 2.625000
2000-02-01 09:00:00 2000-02-01 11:30:00 3.312500
2000-02-01 09:30:00 2000-02-01 11:30:00 2.000000
2000-02-01 10:30:00 2000-02-01 11:30:00 2.312500
2000-02-02 13:30:00 2000-02-02 15:00:00 2.000000
2000-02-02 14:00:00 2000-02-02 15:00:00 2.428571
2000-02-02 15:00:00 2000-02-03 00:00:00 3.000000
2000-02-03 02:30:00 2000-02-03 07:30:00 2.000000
2000-02-03 10:00:00 2000-02-03 15:00:00 2.222222
2000-02-03 10:30:00 2000-02-04 00:00:00 3.259259
2000-02-03 11:00:00 2000-02-04 00:00:00 4.666667
2000-02-03 11:00:00 2000-02-04 01:00:00 2.629630
2000-02-03 11:00:00 2000-02-04 01:30:00 14.500000
2000-02-03 12:30:00 2000-02-04 01:30:00 11.600000
2000-02-03 13:00:00 2000-02-04 01:30:00 5.300000
2000-02-03 13:30:00 2000-02-04 01:30:00 2.700000
2000-02-03 14:00:00 2000-02-04 03:30:00 4.100000
2000-02-03 14:30:00 2000-02-04 03:30:00 2.600000
dataframe представляют список профессий. Первый столбец представляет собой время входа в торговлю, второе - время выхода, третий столбец, пользовательскую метрику, созданную мной.
Я хотел бы, чтобы вычислить максимальное значение netgain_by_MAE для сделок, которые перекрывающихся во времени, например, те из них:
2000-02-01 07:00:00 2000-02-01 11:30:00 2.083333
2000-02-01 08:30:00 2000-02-01 11:30:00 2.625000
2000-02-01 09:00:00 2000-02-01 11:30:00 3.312500
2000-02-01 09:30:00 2000-02-01 11:30:00 2.000000
2000-02-01 10:30:00 2000-02-01 11:30:00 2.312500
(здесь результат был бы 2000-02-01 09:00:00 2000-02-01 11:30:00 3.312500
)
мне удалось получить эти строки с помощью функции GroupBy: best_trades = best_trades.groupby(['MAE_ts'])['netgain_by_MAE'].transform('max')
Однако это возвращает DF, такие как следующие:
2000-02-01 07:00:00 2.083333
2000-02-01 08:30:00 3.312500
2000-02-01 09:00:00 3.312500
2000-02-01 09:30:00 3.312500
2000-02-01 10:30:00 3.312500
2000-02-02 13:30:00 2.428571
...
Как сохранить те же столбцы, что и исходный фреймворк данных, сохраняя только строки, которые имеют максимальное значение netgain_by_mae для каждой группы? (т.е. я хотел бы иметь следующий вывод:
2000-02-01 09:00:00 2000-02-01 11:30:00 3.312500
2000-02-02 14:00:00 2000-02-02 15:00:00 2.428571
2000-02-02 15:00:00 2000-02-03 00:00:00 3.000000
...
что большое ТНХ! Однако в моем примере первый столбец индекса (далее «entry_time»). так или иначе, когда я запускаю свой код, результат просто отсутствует, что первый столбец (это дает что-то подобное): '0 2000-01-03 04:00:00 2.200000'. Любая мысль о том, как сохранить этот первый индекс временной метки как индекс? –
использовать' reset_index' b прежде чем делать код выше, а затем после запуска вышеперечисленного кода 'df.set_index ('entry_time')' –