У меня есть набор данных "nodup", как показано ниже (не отсортировано по времени). это подмножество необработанных данных, не отсортированных. Мне нужно получать записи каждые 15 минут, например, 08:15, 08:30, 08:45 ... но они сохраняют записи только при занятости = 1.
Что мне нужно сделать, это получить занятие = 0, и автоматически заполняет связанный вновь сгенерированный СО2 и влажность на основе предыдущего и следующего значений (из того же устройства). :
device occupancy time co2 humidity
1 1 2019-06-27 10:17:22 818 40
2 1 2019-06-27 10:17:22 818 39
3 1 2019-06-27 08:00:05 625 40
4 1 2019-06-27 12:16:53 723 40
....
1 1 2019-06-28 10:17:22 818 40
2 1 2019-06-28 10:17:22 818 39
3 1 2019-06-28 08:02:05 625 40
4 1 2019-06-28 12:16:53 723 40
....
В качестве примера (я хочу создать 15-минутные записи на основе предыдущих данных, сортируя по времени):
device occupancy time co2 humidity
1 1 2019-06-27 08:15 818 40
2 0 2019-06-27 08:15 XXX XX
3 0 2019-06-27 08:15 XXX XX
4 1 2019-06-27 08:15 723 40
....
1 1 2019-06-27 08:30 830 45
2 0 2019-06-27 08:30 XXX XX
Я пробовал
time_first =nodup['time'].min()
time_last = nodup['time'].max()
mux = pd.MultiIndex.from_product([pd.date_range(time_first, time_last,freq='15min'),
nodup['device'].unique()], names=['time', 'device'])
result = nodup.set_index(['time','device']).reindex(mux, fill_value=0).reset_index()
Но он работает так:
ValueError: cannot handle a non-unique multi-index!
Кто-нибудь может помочь в этом? Когда я просматриваю необработанные данные, в строке
нет дубликатов