Мне нужно представить последовательность событий. Эти события немного необычны в том, что они:
- Непоследовательных
- неперекрывающегося
- нерегулярная продолжительность
Например:
- 1200 - 1203
- 1210 - 1225
- 1304 - 1502
Я хотел бы представлять эти события с помощью Pandas.PeriodIndex
, но я не могу понять, как создать объекты Period
с нерегулярными длительностью.
У меня есть два вопроса:
- Есть ли способ создать объекты
Period
с нерегулярными длительностями, используя существующие функции Pandas? - Если нет, можете ли вы предложить, как изменить Pandas, чтобы обеспечить нерегулярную продолжительность объектов
Period
? (этот комментарий предполагает, что возможно "использование пользовательских классов DateOffset с соответствующим образом созданным onOffset, rollforward, rollback и apply methods" )
Примечания
- docstring для
Period
предполагает, что можно указать произвольные длительности, такие как5T
для "5 минут". Я считаю, что этот документ неверен. Запускpd.Period('2013-01-01', freq='5T')
создает исключениеValueError: Only mult == 1 supported
. Я сообщил эту проблему. - Раздел временных меток против временного интервала в документации Pandas гласит:" Для регулярных промежутков времени Pandas использует
Period
объекты для скалярных значений иPeriodIndex
для последовательностей пространств. Улучшена поддержка нерегулярных интервалов с произвольными начальными и конечными точками в будущих выпусках. (мой акцент)
Обновление 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
.