Pandas 具有自定义持续时间的时间段
Pandas Period with custom duration
阅读 pandas Period
对象的文档让我对是否有可能创建自定义 Period 感到困惑。按照习惯,我的意思是一个不遵循特定频率 dtype
的 Period,但是 PeriodIndex
中的每个 Period 代表一个开始时间戳和一个结束时间戳,这是手动定义的。
举例说明:
假设我有 n 个时间间隔 t,其中每个间隔的开始和结束是来自离散均匀分布随机数的样本具有 beginning < end 约束的变量。
结果看起来像这样:
[(ts_start0, ts_end0), (ts_start1, ts_end1), (ts_start2, ts_end2))]
有没有什么方法可以用 Pandas Period
或类似的东西来编码这样的 "random" 间隔/时间跨度/周期?
我想你可以使用 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]')
阅读 pandas Period
对象的文档让我对是否有可能创建自定义 Period 感到困惑。按照习惯,我的意思是一个不遵循特定频率 dtype
的 Period,但是 PeriodIndex
中的每个 Period 代表一个开始时间戳和一个结束时间戳,这是手动定义的。
举例说明:
假设我有 n 个时间间隔 t,其中每个间隔的开始和结束是来自离散均匀分布随机数的样本具有 beginning < end 约束的变量。
结果看起来像这样:
[(ts_start0, ts_end0), (ts_start1, ts_end1), (ts_start2, ts_end2))]
有没有什么方法可以用 Pandas Period
或类似的东西来编码这样的 "random" 间隔/时间跨度/周期?
我想你可以使用 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]')