代码之家  ›  专栏  ›  技术社区  ›  meow

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

  •  2
  • meow  · 技术社区  · 6 年前

    阅读熊猫的文献 Period 对象使我对是否有可能创建自定义期间感到困惑。习惯上我指的是一个不遵循一定频率的周期 dtype 但是在一个 PeriodIndex 表示手动定义的开始时间戳和结束时间戳。

    举例说明:

    假设我有 n 时间间隔 T 其中,每个区间的开始和结束都是来自离散均匀分布随机变量的样本,其约束是 开始<结束 .

    结果可能是这样的:

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

    有没有办法对熊猫这样的“随机”间隔/时间/周期进行编码? 周期 或者类似的?

    1 回复  |  直到 6 年前
        1
  •  6
  •   MaxU - stand with Ukraine    6 年前

    我想你可以用 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]')