Как сгруппировать панды DataFrame по периодам? - PullRequest
0 голосов
/ 21 сентября 2018

У меня есть некоторые финансовые данные (пример):

prices

                             open_price. high.   low.    close_price
2018-09-03 00:00:00+00:00    103.24      103.77  102.95  103.89 
2018-09-04 00:00:00+00:00    103.89      104.10  103.50  103.95
2018-09-05 00:00:00+00:00    103.95      104.20  103.90  104.15
2018-09-06 00:00:00+00:00    104.15      104.56  103.50  104.20
(...)
2018-09-19 00:00:00+00:00    108.42      108.85  108.19. 108.60
2018-09-20 00:00:00+00:00    108.60      108.89  108.40  108.75

Я пытался сгруппировать эти данные, скажем, за 2 дня.Если я использую

prices.resample('2B', closed='left', label='left').first()

Финансовая дата будет выглядеть следующим образом:

                             open_price. high.   low.    close_price
2018-09-03 00:00:00+00:00    103.24      103.77  102.95  103.89
2018-09-05 00:00:00+00:00    103.95      104.20  103.90  104.15
(...)
2018-09-19 00:00:00+00:00    108.42      108.85  108.19. 108.60

Я ищу способ сделать это: Дата 2018-09-03 будет принимать цену открытия2018-09-03, минимум и максимум 2018-09-03 и 2018-09-04 и, наконец, цена закрытия 2018-09-04 ... Следующей датой будет 2018-09-05, принимая открытие 2018-09-05, минимум и максимум2018-09-05 и 2018-09-06 и, наконец, закрытие 2018-09-06.

Это должно выглядеть примерно так:

                             open_price. high.   low.    close_price
2018-09-03 00:00:00+00:00    103.24      104.10  102.95  103.95 
2018-09-05 00:00:00+00:00    103.95      104.56  103.50  104.20
(...)
2018-09-19 00:00:00+00:00    108.42      108.89  108.19. 108.60

Есть ли простой способ сделать это?Спасибо.

1 Ответ

0 голосов
/ 21 сентября 2018

Вы можете использовать resample с agg

d={'open_price.':'first','high.':'max','low.':'min','close_price':'last'}
df.resample('2B', closed='left', label='left').agg(d)
Out[1031]: 
            open_price.   high.    low.  close_price
2018-09-03       103.24  104.10  102.95       103.95
2018-09-05       103.95  104.56  103.50       104.20
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...