自定义持续时间的熊猫时期

时间:2018-06-21 15:34:41

标签: python pandas period

阅读熊猫Period对象的文档使我困惑,是否有可能创建自定义的Period。习惯上,我的意思是一个不遵循特定频率dtype的期间,但PeriodIndex中的每个期间代表手动定义的开始时间戳和结束时间戳。

说明:

让我们说我有 n 个时间间隔 t ,其中每个间隔的开始和结束都是来自离散均匀分布的随机变量的样本,其约束为从<结束开始。

结果有点像这样:

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

有没有办法用熊猫Period或类似的东西来编码这样的“随机”间隔/时间间隔/时间段?

1 个答案:

答案 0 :(得分: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]]')

更新:我们可以使用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]')