Панды применяют групповую передачу на групповой объект - PullRequest
0 голосов
/ 25 апреля 2018

У меня есть данные с двумя индексами (дата и время), которые я импортировал с помощью pandas.read_csv (), и они изначально выглядят так:

Date         Time                   Volume
2016-01-04   2018-04-25 09:01:29    53645
             2018-04-25 10:01:29    123
             2018-04-25 10:01:29    1345
             ....
2016-01-05   2018-04-25 10:01:29    123
             2018-04-25 12:01:29    213
             2018-04-25 10:01:29    123
             ....

Я хочу сгруппировать их по дням по группам20 минут бункеров.Это должно выглядеть следующим образом.

Date         Time                   Volume
2016-01-04   2018-04-25 09:00:00    53645
             2018-04-25 09:20:00    456453
             2018-04-25 09:40:00    13153
             ....
             2018-04-25 17:00:00    13153
2016-01-05   2018-04-25 09:00:00    46465
             2018-04-25 09:20:00    454688
             2018-04-25 09:40:00    45645
             ....
             2018-04-25 17:00:00    45646

Я уже достиг того, чего хочу, но я совершенно уверен, что есть более «питонный» и менее потребляющий память способ достижения моей цели.Мой код теперь выглядит так:

    frames = []
    for date, sub_df in _file_data.groupby(level=0):
        gr = sub_df.groupby(pd.Grouper(level=1, freq="20min")).sum()
        frames.append(gr)
    _file_data = pd.concat(frames)

1 Ответ

0 голосов
/ 25 апреля 2018

Мне кажется, нужно DataFrameGroupBy.resample:

df1 = df.reset_index(level=0).groupby('Date').resample('20min').sum()
print (df1)
                                Volume
Date       Time                       
2016-01-04 2018-04-25 09:00:00   53645
           2018-04-25 09:20:00       0
           2018-04-25 09:40:00       0
           2018-04-25 10:00:00    1468
2016-01-05 2018-04-25 10:00:00     246
           2018-04-25 10:20:00       0
           2018-04-25 10:40:00       0
           2018-04-25 11:00:00       0
           2018-04-25 11:20:00       0
           2018-04-25 11:40:00       0
           2018-04-25 12:00:00     213
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...