如何将numpy.datetime64对象转换为datetime.datetime(或Timestamp)?
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
datetime
Timestamp``numpy.datetime64``dt64
。
更新:我的数据集中一个有点令人讨厌的例子(也许是激励的例子)似乎是:
dt64 = numpy.datetime64('2002-06-28T01:00:00.000000000+0100')
应该是datetime.datetime(2002, 6, 28, 1, 0),而不是很长(!)(1025222400000000000L)…
datetime.datetime(2002, 6, 28, 1, 0)
1025222400000000000L
要将 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.Timestamp 将 numpy.datetime64 转换为 datetime.datetime: python 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
dt64
np.datetime64
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
pd.Timestamp
pandas
python 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)