Нерегулярные, несмежные периоды в Pandas
Мне нужно представить последовательность событий. Эти события немного необычны в том, что они:
- Непоследовательных
- неперекрывающегося
- нерегулярная продолжительность
Например:
- 1200 - 1203
- 1210 - 1225
- 1304 - 1502
Я хотел бы представлять эти события с помощью Pandas.PeriodIndex
, но я не могу понять, как создать объекты Period
с нерегулярными длительностью.
У меня есть два вопроса:
- Есть ли способ создать объекты
Period
с нерегулярными длительностями, используя существующие функции Pandas?
- Если нет, можете ли вы предложить, как изменить Pandas, чтобы обеспечить нерегулярную продолжительность объектов
Period
? (этот комментарий предполагает, что возможно "использование пользовательских классов DateOffset с соответствующим образом созданным onOffset, rollforward, rollback и apply methods" )
Примечания
Обновление 1
Построение a Period
с пользовательской продолжительностью выглядит довольно просто. НО Я думаю, что основной камень преткновения будет убеждать PeriodIndex
принять Periods
с разными freqs
. например:.
In [93]: pd.PeriodIndex([pd.Period('2000', freq='D'),
pd.Period('2001', freq='T')])
ValueError: 2001-01-01 00:00 is wrong freq
Похоже, что центральное предположение в PeriodIndex
состоит в том, что каждый период имеет тот же freq
.
Ответы
Ответ 1
Возможное решение, в зависимости от приложения, состоит в том, чтобы выгрузить ваши данные, создав PeriodIndex, который имеет период, равный наименьшей единице временного разрешения, которая вам нужна для обработки ваших данных, а затем разделить данные между бункерами для каждого события, оставив оставшиеся ящики нулевыми.
Ответ 2
если у вас есть период времени, в который вы должны указать дату, включая минуты, например:
pd.PeriodIndex([pd.Period('2000-01-01 00:00', freq='T'),
pd.Period('2001-01-01 00:00', freq='T')])
результат:
PeriodIndex(['2000-01-01 00:00', '2001-01-01 00:00'], dtype='period[T]', freq='T')