#python #pandas
#python #pandas
Вопрос:
У меня есть фрейм данных с такой структурой:
time,name,status
2016-10-09 00:15:50,10.0.0.24,REJECTED
2016-10-09 00:15:50,10.0.0.24,REJECTED
2016-10-09 00:15:54,10.0.0.24,accepted
Который группируется с использованием этого кода
dfx = df.set_index(['time'])
dfx = dfx[dfx.status == 'accepted']
grouper = dfx.groupby([pd.TimeGrouper("20min"), 'name'])
dfTime = grouper['name'].count().unstack('name').fillna(0)
Предоставление фрейма данных с подробным описанием количества событий для каждого IP-адреса, который выглядит примерно так:
time,10.0.0.103,10.0.0.24
2016-10-11 20:20:00,8,6
2016-10-11 20:40:00,151,198
2016-10-11 21:00:00,150,209
2016-10-11 21:20:00,136,214
2016-10-11 21:40:00,155,196
2016-10-11 22:00:00,140,218
2016-10-11 22:20:00,170,219
2016-10-11 22:40:00,154,193
2016-10-11 23:00:00,141,195
2016-10-11 23:20:00,149,206
2016-10-11 23:40:00,132,190
2016-10-12 00:00:00,140,197
2016-10-12 00:20:00,182,238
2016-10-12 00:40:00,171,215
2016-10-12 01:00:00,40,45
2016-10-12 12:40:00,100,196
2016-10-12 13:00:00,171,212
2016-10-12 13:20:00,180,200
2016-10-12 13:40:00,184,220
Вы заметите, что там, где не было данных (например, между 00:40 и 01:00), группировка просто не завершена. Мне нужно, чтобы каждый 20-минутный блок был представлен в конечном фрейме данных с 0 отсчетами для соответствующих IP-адресов, т.Е.:
2016-10-12 00:40:00,171,215
2016-10-12 00:50:00,0,0
2016-10-12 01:00:00,40,45
Каков наилучший способ сделать это?
Комментарии:
1. как насчет использования
resample()
вместоgroupby()
?