Суммируйте данные из Pandas в полчаса - PullRequest
2 голосов
/ 22 мая 2019

У меня есть кадр данных pandas, который выглядит примерно как issue кадр данных ниже:

import pandas as pd
import datetime

Y = 2017
M = 9

dats = (datetime.datetime(Y, M, M, 15, 30), datetime.datetime(Y, M, M, 16),
        datetime.datetime(Y, M, M, 16, 30), datetime.datetime(Y, M, M, 17),
        datetime.datetime(Y, M, M, 17, 4), datetime.datetime(Y, M, M, 17, 30),
        datetime.datetime(Y, M, M, 18), datetime.datetime(Y, M, M, 18, 30))

issue = {'datetime': dats, 
         '5.0':(2.05, 2.04, 2.04 ,1, float('NaN'), 2.05, 2.04, 5), 
         '6.0':(5.8, 5.9, 5.2, float('NaN'), 6, 6.01, 5, 5.02)}
issue = pd.DataFrame.from_dict(issue)

Я хотел бы суммировать данные в этом кадре данных, чтобы они содержали только получасовые точки и принимали среднее значение для любых значений, которые происходят в течение этого получаса (исключая значения nan). Таким образом, конечной целью было бы иметь фрейм данных, который выглядит как resolution фрейм данных, созданный ниже:

import pandas as pd
import datetime

Y = 2017
M = 9

dats2 = (datetime.datetime(Y, M, M, 15, 30), datetime.datetime(Y, M, M, 16),
         datetime.datetime(Y, M, M, 16, 30), datetime.datetime(Y, M, M, 17), 
         datetime.datetime(Y, M, M, 17, 30), datetime.datetime(Y, M, M, 18), 
         datetime.datetime(Y, M, M, 18, 30))

resolution = {'datetime': dats2, 
              '5.0':(2.05, 2.04, 2.04 ,1, 2.05, 2.04, 5), 
              '6.0':(5.8, 5.9, 5.2, 6, 6.01, 5, 5.02)}
resolution = pd.DataFrame.from_dict(resolution)

Я легко могу сделать это в R, используя dplyr, но с Python я все еще в некотором роде нуб. Заранее благодарим за любую помощь в этом вопросе!

1 Ответ

3 голосов
/ 22 мая 2019

Даже короче чем в R

issue.set_index('datetime').resample('30 min').mean()
Out[685]: 
                      5.0   6.0
datetime                       
2017-09-09 15:30:00  2.05  5.80
2017-09-09 16:00:00  2.04  5.90
2017-09-09 16:30:00  2.04  5.20
2017-09-09 17:00:00  1.00  6.00
2017-09-09 17:30:00  2.05  6.01
2017-09-09 18:00:00  2.04  5.00
2017-09-09 18:30:00  5.00  5.02
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...