2

例如,在 q 中,有一个专用的时间结构,例如 11:59:59.999,我可以在表中将其用作列。熊猫中有这样的东西吗?

我阅读了该文档,似乎有相当全面的例子来说明每日决议的时间戳,我猜这对基金经理有好处。是否有毫秒分辨率时间结构?

4

2 回答 2

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属性Series产生dtypenumpy.ndarray的a 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

pandas0.13.0 中,您将能够创建纳秒范围date_range,这对于具有相当大的采样率的数据集非常有用,例如神经生理学中的细胞外记录:

In [15]: date_range('2013/11/1', freq='N', periods=10)
Out[15]:
<class 'pandas.tseries.index.DatetimeIndex'>
[2013-11-01 00:00:00, ..., 2013-11-01 00:00:00.000000009]
Length: 10, Freq: N, Timezone: None
于 2013-10-06T21:09:28.590 回答
2

Pandas 支持使用 numpy datetime 64 对象,这些对象使用 64 位存储时间。从公元前 2.9e6 到公元 2.9e6,这具有足够的毫秒绝对分辨率,请参阅此处了解更多信息。您可以在 pandas 中轻松地将日期或日期字符串转换为日期时间,请参阅文档和有用的IPython 笔记本

正如@PhillipCloud 在他的回答中评论和澄清的那样,这表示为 datetime64[ns] 所以它是纳秒,对于您需要的分辨率应该足够精细。

于 2013-10-06T20:50:11.787 回答