仅在pandas中的每日数据的DatetimeIndex

时间:2014-11-13 17:30:08

标签: python pandas

我想根据每日日期创建自定义索引,例如:

a = bdate_range('1990-01-01', freq='D', periods=10)

这将创建一个包含各种Timestamp对象的索引:

>>> a[0]
Timestamp('1990-01-01 00:00:00', offset='D')

不幸的是,Timestamp类似乎每次使用[ns]标志初始化基础numpy.datetime64对象,即启用粒度低至纳秒。

这对我的数据来说太过分了,只需每日 粒度。不仅如此,但允许这么多粒度限制数据仅在1678年之后开始! (即Timestamp('1677-01-01')将失败)。解决方案应该是可以以某种方式设置一个标志来确定Timestamp对象应该使用哪个datetime64分辨率,例如类似的东西:

Timestamp('1990-01-01', dtype='datetime64[d]')

并且理想情况下bdate_range或date_range应该具有可以设置的类似标志,以便创建格式正确的时间戳的整个索引。

长话短说,pandas是否有可能创建某种类型的索引(例如DatetimeIndex,或者DateIndex?),它特别适合处理日常数据?

感谢您的回复

1 个答案:

答案 0 :(得分:2)

我相信DatetimeIndex的内部结构与纳秒分辨率密切相关,因此我不认为可以在那里做很多事情。

但是,正如"警告中所建议的那样#34; documentation的一部分,PeriodIndex可用于表示纳秒分辨率以外的日期。

In [147]: a = pd.period_range('1990-01-01', freq='D', periods=10)

In [148]: a[0]
Out[148]: Period('1990-01-01', 'D')