我需要代表一系列事件。这些事件有点不寻常,因为它们是:
- 不连续
- 不重叠
- 不规则的持续时间
例如:
- 1200 - 1203
- 1210 - 1225
- 1304 - 1502
我想使用来表示这些事件,Pandas.PeriodIndex
但我不知道如何创建Period
持续时间不规则的对象。
我有两个问题:
- 有没有办法
Period
使用现有的 Pandas 功能创建持续时间不规则的对象? - 如果没有,您能否建议如何修改 Pandas 以提供不规则的持续时间
Period
对象?(此评论表明可能“使用具有适当制作的 onOffset、前滚、回滚和应用方法的自定义 DateOffset 类”)
笔记
- 的文档字符串
Period
表明可以指定任意持续时间,例如5T
“5 分钟”。我相信这个文档字符串是不正确的。运行pd.Period('2013-01-01', freq='5T')
会产生异常ValueError: Only mult == 1 supported
。我已经报告了这个问题。 - Pandas 文档中的“时间戳与时间跨度”部分指出“对于常规时间跨度,pandas 将
Period
对象用于标量值和PeriodIndex
跨度序列。未来版本中将提供对具有任意起点和终点的不规则间隔的更好支持. ”(我的重点)
更新 1
使用自定义持续时间构建一个Period
看起来非常简单。 但我认为主要的绊脚石将是说服PeriodIndex
接受Periods
不同的freqs
. 例如:
In [93]: pd.PeriodIndex([pd.Period('2000', freq='D'),
pd.Period('2001', freq='T')])
ValueError: 2001-01-01 00:00 is wrong freq
看起来一个中心假设PeriodIndex
是每个 Period 都具有相同的freq
.