Как взять среднее значение одного столбца в кадре данных, но за каждые 5 минут из столбца datetimestamp? - PullRequest
0 голосов
/ 12 мая 2018

У меня есть датафрейм, который выглядит так:

      Event time Event type  Ignore       Price  
0  1526076933917      kline       0       18202362   
1  1526076937493      kline       0       18202367

Я преобразую столбец «Время события» в читаемый человеком формат с помощью этой строки:

df['Event time'] = pd.to_datetime(df['Event time'], unit='ms')

Теперь датафрейм выглядит так:

               Event time Event type  Ignore        Price  
0 2018-05-11 22:15:33.917      kline       0       18202362   
1 2018-05-11 22:15:37.493      kline       0       18202367   

Как отсюда взять среднее значение «Цена» за каждые 5 минут из столбца «Время события» и оставить все остальные столбцы такими же?

1 Ответ

0 голосов
/ 12 мая 2018

Вы можете использовать pd.Grouper с freq из 5 минут (freq='5min'):

import pandas as pd

data = '''\
Event time,Event type,Ignore,Price
1526076933917,kline,0,18202362   
1526076937493,kline,0,18202367'''

df = pd.read_csv(pd.compat.StringIO(data))
df['Event time'] = pd.to_datetime(df['Event time'], unit='ms')

df['avgPrice'] = (df.groupby(pd.Grouper(freq='5min', key='Event time'))['Price']
                    .transform('mean'))

print(df)

И вы получите:

               Event time Event type  Ignore     Price    avgPrice
0 2018-05-11 22:15:33.917      kline       0  18202362  18202364.5
1 2018-05-11 22:15:37.493      kline       0  18202367  18202364.5
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...