我需要代表一系列事件。这些事件有点不寻常,因为它们是:
例如:
我想使用Pandas.PeriodIndex
来表示这些事件,但我无法弄清楚如何创建具有不规则持续时间的Period
个对象。
我有两个问题:
Period
个对象?Period
个对象? (this comment表明可能“使用自定义的DateOffset类,并使用适当的onOffset,前滚,回滚和应用方法”)Period
的文档字符串表明可以为“5分钟”指定5T
之类的任意持续时间。我相信这个docstring是不正确的。运行pd.Period('2013-01-01', freq='5T')
会产生异常ValueError: Only mult == 1 supported
。我已报告this issue。Period
个对象作为标量值,使用PeriodIndex
作为跨度序列。更好地支持不规则的时间间隔未来版本中将出现任意的起点和终点。“(我的重点)使用自定义持续时间构建Period
看起来非常简单。 但是我认为主要障碍是说服PeriodIndex
接受Periods
与freqs
的不同。 e.g:
In [93]: pd.PeriodIndex([pd.Period('2000', freq='D'),
pd.Period('2001', freq='T')])
ValueError: 2001-01-01 00:00 is wrong freq
PeriodIndex
中的一个中心假设是每个句点都有相同的freq
。
答案 0 :(得分:1)
如果你有一段时间的分钟,你必须通过日期时间,包括如下的分钟:
pd.PeriodIndex([pd.Period('2000-01-01 00:00', freq='T'),
pd.Period('2001-01-01 00:00', freq='T')])
结果:
PeriodIndex(['2000-01-01 00:00', '2001-01-01 00:00'], dtype='period[T]', freq='T')
答案 1 :(得分:0)
根据应用程序的不同,一种可能的解决方案是通过创建PeriodIndex来对数据进行分区,该PeriodIndex的周期等于处理数据所需的最小时间分辨率,然后在数据块之间划分数据对于每个事件,将剩余的箱子留空。