数据类型“datetime64[ns]”和“
2023-11-26


我在 pandas 中创建了一个 TimeSeries:

In [346]: from datetime import datetime

In [347]: dates = [datetime(2011, 1, 2), datetime(2011, 1, 5), datetime(2011, 1, 7),

 .....: datetime(2011, 1, 8), datetime(2011, 1, 10), datetime(2011, 1, 12)]

In [348]: ts = Series(np.random.randn(6), index=dates)

In [349]: ts

Out[349]: 

2011-01-02 0.690002

2011-01-05 1.001543

2011-01-07 -0.503087

2011-01-08 -0.622274

2011-01-10 -0.921169

2011-01-12 -0.726213

我正在遵循“Python for Data Analysis”一书中的示例。

在下面的段落中,作者检查了索引类型:

In [353]: ts.index.dtype

Out[353]: dtype('datetime64[ns]')

当我在控制台中执行完全相同的操作时,我得到:

ts.index.dtype
dtype('<M8[ns]')

两种类型有什么区别'datetime64[ns]' and '<M8[ns]' ?

为什么我会得到不同的类型?


datetime64[ns]是一般数据类型,而<M8[ns]是一个特定的数据类型。常规数据类型映射到特定数据类型,但 NumPy 的一个安装与下一个安装可能不同。

在字节顺序为小端的机器上,两者之间没有区别np.dtype('datetime64[ns]') and np.dtype('<M8[ns]'):

In [6]: np.dtype('datetime64[ns]') == np.dtype('<M8[ns]')
Out[6]: True

然而,在大端机器上,np.dtype('datetime64[ns]')将等于np.dtype('>M8[ns]').

So datetime64[ns]映射到任一<M8[ns] or >M8[ns]取决于机器的字节序。

还有许多其他类似的通用数据类型映射到特定数据类型的示例:int64映射到<i8 or >i8, and int映射到任一int32 or int64取决于操作系统的位架构以及 NumPy 的编译方式。


显然,自从本书编写以来,datetime64 数据类型的表示已经发生了变化,以显示数据类型的字节序。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

数据类型“datetime64[ns]”和“

随机推荐