熊猫中不规则,不连续的时期

Jac*_*lly 17 python time-series pandas

我需要代表一系列事件.这些事件有点不寻常,因为它们是:

  • 非连续
  • 非重叠
  • 不规则的时间

例如:

  • 1200 - 1203
  • 1210 - 1225
  • 1304 - 1502

我想用这些事件来表示,Pandas.PeriodIndex但我无法弄清楚如何创建Period具有不规则持续时间的对象.

我有两个问题:

  1. 有没有办法Period使用现有的Pandas功能创建具有不规则持续时间的对象?
  2. 如果没有,您能否建议如何修改Pandas以提供不规则持续时间的Period对象?(此评论表明可能" 使用自定义的DateOffset类与适当制作的onOffset,前滚,回滚和应用方法 ")

笔记

  1. 文档字符串Period表示可以指定任意持续时间,例如5T"5分钟".我相信这个docstring是不正确的.运行pd.Period('2013-01-01', freq='5T')会产生异常ValueError: Only mult == 1 supported.我已经报道了这个问题.
  2. Pandas文档中"时间戳与时间跨度"部分说明" 对于常规时间跨度,大熊猫使用Period对象进行标量值和PeriodIndex跨度序列.对于具有任意起点和终点的不规则区间的更好支持在未来版本中即将出现. "(我的重点)

更新1

Period使用自定义持续时间构建a 看起来非常简单. 我认为主要的绊脚石将说服不同的PeriodIndex接受.例如:Periodsfreqs

In [93]: pd.PeriodIndex([pd.Period('2000', freq='D'), 
                         pd.Period('2001', freq='T')])

ValueError: 2001-01-01 00:00 is wrong freq
Run Code Online (Sandbox Code Playgroud)

看起来像一个中心假设PeriodIndex是每个时期都有相同的freq.

小智 1

根据应用程序,一种可能的解决方案是通过创建一个周期索引来对数据进行分箱,该周期索引的周期等于处理数据所需的最小时间分辨率单位,然后将数据划分到每个事件的分箱中,将剩余的 bin 留空。