У меня есть датафрейм, индекс которого - это подмножество дней месяца. Я хочу добавить все дни от 1-го до последнего, заполняя несуществующие значения до 0 и сохраняя существующие.
Я пробовал с reindex, но все попытки заканчиваются отсутствием данных.
Это мой образец DataFrame:
checkin_date checkout_date duration
0 2019-05-20 08:48:09.630928+00:00 2019-05-20 09:51:55.130997+00:00 01:03:45.500069
1 2019-05-20 08:39:12.660055+00:00 2019-05-20 09:51:55.130997+00:00 01:12:42.470942
2 2019-05-19 16:38:15.195097+00:00 2019-05-20 08:20:49.860755+00:00 15:42:34.665658
3 2019-05-19 16:20:29.513691+00:00 2019-05-20 07:41:46.928414+00:00 15:21:17.414723
4 2019-05-07 12:06:02.255836+00:00 2019-05-07 17:30:22.550536+00:00 05:24:20.294700
5 2019-05-07 11:00:19.765565+00:00 2019-05-07 11:10:33.792748+00:00 00:10:14.027183
Я делаю это для повторной выборки:
df.set_index('checkin_date').resample('D').sum()
, который дает мне DataFrame от первой существующей даты месяца до последней существующей даты:
duration
checkin_date
2019-05-07 00:00:00+00:00 0 days 05:34:34.321883
2019-05-08 00:00:00+00:00 0 days 00:00:00
2019-05-09 00:00:00+00:00 0 days 00:00:00
2019-05-10 00:00:00+00:00 0 days 00:00:00
2019-05-11 00:00:00+00:00 0 days 00:00:00
2019-05-12 00:00:00+00:00 0 days 00:00:00
2019-05-13 00:00:00+00:00 0 days 00:00:00
2019-05-14 00:00:00+00:00 0 days 00:00:00
2019-05-15 00:00:00+00:00 0 days 00:00:00
2019-05-16 00:00:00+00:00 0 days 00:00:00
2019-05-17 00:00:00+00:00 0 days 00:00:00
2019-05-18 00:00:00+00:00 0 days 00:00:00
2019-05-19 00:00:00+00:00 1 days 07:03:52.080381
2019-05-20 00:00:00+00:00 0 days 02:16:27.971011
Что идеально. Но мне нужно заполнить DataFrame недостающими датами месяца: первые и последние дни.
Так что я пытаюсь что-то подобное переиндексировать:
idx = pd.date_range(datetime(year=2019, month=5, day=1), datetime(year=2019, month=5, day=31))
df.reindex(idx, fill_value=0)
Сначала эта последняя команда приводит к нулям во всех ячейках. Я пытался переформатировать df index или idx, но ничего не работает.
Есть идеи?