У меня есть кадр данных, подобный приведенному ниже:
df = pd.DataFrame({'ticker':['A', 'A', 'A', 'A', 'A',
'B', 'B', 'B', 'B', 'B'],
'date':['2020-05-01 09:30:00', '2020-05-01 09:31:00', '2020-05-01 09:32:00', '2020-05-01 09:33:00', '2020-05-01 09:34:00',
'2020-05-01 09:30:00', '2020-05-01 09:31:00', '2020-05-01 09:32:00', '2020-05-01 09:33:00', '2020-05-01 09:34:00'],
'datetime':['2020-05-01 09:30:00', '2020-05-01 09:31:00', '2020-05-01 09:32:00', '2020-05-01 09:33:00', '2020-05-01 09:34:00',
'2020-05-01 09:30:00', '2020-05-01 09:31:00', '2020-05-01 09:32:00', '2020-05-01 09:33:00', '2020-05-01 09:34:00'],
'low':[10.00, 11.00, 12.00, 11.00, 11.50,
15.00, 14.00, 13.00, 12.00, 12.50],
'high':[10.25, 11.25, 12.25, 11.25, 11.75,
15.25, 14.25, 13.25, 12.25, 12.75],
'close':[10.20, 11.20, 12.20, 11.20, 11.70,
15.20, 14.20, 13.20, 12.20, 12.75]})
df['date'] = pd.to_datetime(df['date'], format='%Y-%m-%d %H:%M')
df['datetime'] = pd.to_datetime(df['datetime'], format='%Y-%m-%d %H:%M')
df = df.set_index(['ticker', 'date'])
Я пытаюсь выяснить, как создать столбцы в моем кадре данных с минимальной и максимальной ценами каждого тикера в данный момент времени. То есть между первым днем и текущим временем данной строки.
- Например, в 09:32:00 тикер B имел самую низкую цену 13,0 (происходившую в эту минуту ), но тикер А имел самую низкую цену 10,0 (что произошло в 09:30:00).
- Аналогично, в 09:32:00 тикер В имел самую высокую цену 11,25 (что произошло в минута), но у тикера A была самая высокая цена 15,25 (что произошло при открытии в 09:30:00).
Я пробовал различные операторы .groupby и .lo c , но, кажется, не могу найти правильный.
Любая помощь будет принята с благодарностью!