小能豆

在 datetime、Timestamp 和 datetime64 之间转换

pytthon

如何将numpy.datetime64对象转换为datetime.datetime(或Timestamp)?

在下面的代码中,我创建了 datetime、timestamp 和 datetime64 对象。

import datetime
import numpy as np
import pandas as pd
dt = datetime.datetime(2012, 5, 1)
# A strange way to extract a Timestamp object, there's surely a better way?
ts = pd.DatetimeIndex([dt])[0]
dt64 = np.datetime64(dt)

In [7]: dt
Out[7]: datetime.datetime(2012, 5, 1, 0, 0)

In [8]: ts
Out[8]: <Timestamp: 2012-05-01 00:00:00>

In [9]: dt64
Out[9]: numpy.datetime64('2012-05-01T01:00:00.000000+0100')

注意:从时间戳获取日期时间很容易:

In [10]: ts.to_datetime()
Out[10]: datetime.datetime(2012, 5, 1, 0, 0)

但是,我们如何从( )中提取datetime或?Timestamp``numpy.datetime64``dt64

更新:我的数据集中一个有点令人讨厌的例子(也许是激励的例子)似乎是:

dt64 = numpy.datetime64('2002-06-28T01:00:00.000000000+0100')

应该是datetime.datetime(2002, 6, 28, 1, 0),而不是很长(!)(1025222400000000000L)…


阅读 48

收藏
2024-06-27

共1个答案

小能豆

要将 numpy.datetime64 对象(dt64)转换回 datetime.datetime 对象,可以使用以下方法: ### 将 numpy.datetime64 转换为 datetime.datetime 1. 使用 np.datetime64 方法: 可以使用 np.datetime64 方法直接将 numpy.datetime64 对象转换为 datetime.datetime 对象: python import numpy as np import datetime dt64 = np.datetime64('2012-05-01T01:00:00.000000+0100') dt = dt64.astype(datetime.datetime) print(dt) 这将输出: 2012-05-01 01:00:00 2. 使用 pd.Timestamp(如果 pandas 可用):如果您导入了 pandas,则可以使用 pd.Timestampnumpy.datetime64 转换为 datetime.datetimepython import numpy as np import pandas as pd dt64 = np.datetime64('2012-05-01T01:00:00.000000+0100') dt = pd.Timestamp(dt64).to_pydatetime() print(dt) 这也会输出: 2012-05-01 01:00:00 ### 注意: - 时区处理:确保适当处理时区。 numpy.datetime64 对象可以包含时区信息,而如何处理这种转换取决于是否需要保留时区意识。-**Per

2024-06-27