例如,在q中,有一个专用的时间结构,例如11:59:59.999,我可以在表中作为列使用它。大熊猫有这样的东西吗?
我阅读了文档,似乎有一个相当全面的日常解决方案时间戳示例,这对基金经理来说是个好消息。是否有毫秒秒的分辨率时间结构?
答案 0 :(得分:3)
Timestamp
! pandas
使用自己的Timestamp
类支持最高纳秒分辨率,该类是datetime.datetime
的子类:
In [6]: pd.Timestamp('now') + np.timedelta64(100, 'ns')
Out[6]: Timestamp('2013-10-06 21:09:19.000000100', tz=None)
In [7]: isinstance(_6, datetime.datetime)
Out[7]: True
请注意,所有类似日期的Series
对象都表示为datetime64[ns]
:
In [8]: Series(date_range('now', periods=5))
Out[8]:
0 2013-10-06 21:11:37
1 2013-10-07 21:11:37
2 2013-10-08 21:11:37
3 2013-10-09 21:11:37
4 2013-10-10 21:11:37
dtype: datetime64[ns]
即使我只在结构中指定'D'
(天)频率,也是如此:
In [11]: Series(date_range('1/1/2001', periods=5, freq='D'))
Out[11]:
0 2001-01-01 00:00:00
1 2001-01-02 00:00:00
2 2001-01-03 00:00:00
3 2001-01-04 00:00:00
4 2001-01-05 00:00:00
dtype: datetime64[ns]
values
的{{1}}属性产生Series
numpy.ndarray
个dtype:
datetime64[ns]
您还可以创建具有毫秒频率的日期范围(请注意此处的In [12]: s = Series(date_range('1/1/2001', periods=5, freq='D'))
In [13]: s.values
Out[13]:
array(['2000-12-31T19:00:00.000000000-0500',
'2001-01-01T19:00:00.000000000-0500',
'2001-01-02T19:00:00.000000000-0500',
'2001-01-03T19:00:00.000000000-0500',
'2001-01-04T19:00:00.000000000-0500'], dtype='datetime64[ns]')
;这只是我们提供的名称,自'L'
用于'MS'
偏移后的毫秒数):
MonthBegin
在In [18]: date_range('2013/11/1', freq='ms', periods=10)
Out[18]:
<class 'pandas.tseries.index.DatetimeIndex'>
[2013-11-01 00:00:00, ..., 2013-11-01 00:00:00.009000]
Length: 10, Freq: L, Timezone: None
0.13.0中,您将能够使用pandas
创建纳秒范围,这对于具有相当大采样率的数据集非常有用,例如神经生理学中的细胞外记录:
date_range
答案 1 :(得分:2)
Pandas支持使用numpy datetime 64对象,这些对象使用64位来存储时间。这具有从公元前2.9e6到公元2.9e6的毫秒的绝对分辨率,有关详细信息,请参阅here。您可以在熊猫中轻松地将日期或日期字符串转换为日期时间,请参阅docs和有用的IPython notebook。
正如@PhillipCloud在他的回答中评论和阐明的那样,它表示为datetime64 [ns],所以它是纳秒级,应该足够精确到你需要的分辨率。