Период панд с пользовательской продолжительностью

1

Чтение документов объектов pandas Period оставляет меня в замешательстве относительно того, возможно ли создать пользовательский период. По обычаю я подразумеваю период, который не соответствует определенному частоте dtype но где каждый период в PeriodIndex представляет собой PeriodIndex метку начала и PeriodIndex метку конца, которая определяется вручную.

Проиллюстрировать:

Допустим, у меня есть n временных интервалов t, где начало и конец каждого интервала являются выборками из дискретной равномерно распределенной случайной величины с ограничением, которое начинается <end.

Результат будет выглядеть примерно так:

[(ts_start0, ts_end0), (ts_start1, ts_end1), (ts_start2, ts_end2))]

Есть ли способ кодировать такие "случайные" интервалы/временные интервалы/периоды с Period Панды или что-то подобное?

Теги:
pandas
period

1 ответ

4
Лучший ответ

Я думаю, вы можете использовать IntervalIndex:

In [18]: pd.IntervalIndex([pd.Interval(1,3), pd.Interval(4, 11), pd.Interval(13, 28)])
Out[18]:
IntervalIndex([(1, 3], (4, 11], (13, 28]]
              closed='right',
              dtype='interval[int64]')

используя временные метки:

In [25]: pd.IntervalIndex([
    ...:   pd.Interval(pd.to_datetime('2018-01-01'), pd.to_datetime('2018-01-13')),
    ...:   pd.Interval(pd.to_datetime('2018-03-08'), pd.to_datetime('2018-04-29')),
    ...:   pd.Interval(pd.to_datetime('2018-05-03'), pd.to_datetime('2018-07-22'))
    ...: ])
    ...:
Out[25]:
IntervalIndex([(2018-01-01, 2018-01-13], (2018-03-08, 2018-04-29], (2018-05-03, 2018-07-22]]
              closed='right',
              dtype='interval[datetime64[ns]]')

UPDATE: мы можем использовать конструктор pd.IntervalIndex.from_tuples():

In [16]: pd.IntervalIndex.from_tuples([(1,3), (4, 11), (13, 28)], closed='right')
Out[16]:
IntervalIndex([(1, 3], (4, 11], (13, 28]]
              closed='right',
              dtype='interval[int64]')

Ещё вопросы

Сообщество Overcoder
Наверх
Меню