从整数创建tz感知pandas时间戳对象

时间:2015-06-05 14:09:03

标签: numpy pandas datetime64

我有一个整数,它是unix纪元后的微秒数。 (格林尼治标准时间)

如何使用astype将1349863207154117转换为pandas.Timestamp(“2012-10-10T06:00:07.154117”,tz =¨UTC¨)?关于astype的文档不是很全面。我尝试了以下内容。

x = 1349863207154117
dt64 = np.int64(x).astype("M8[us]")
print dt64

返回:

np.datetime64("2012-10-10T06:00:07.154117-0400")
  1. 如果我只想要秒,这可行:

    time = pd.Timestamp(datetime.datetime.fromtimestamp(int(x / 1e6)), tz=¨UTC¨)
    

1 个答案:

答案 0 :(得分:3)

我想说这篇文档here几乎涵盖了这一点。

In [2]: pd.to_datetime(1349863207154117,unit='us')
Out[2]: Timestamp('2012-10-10 10:00:07.154117')

如果你想在当地时区

In [6]: pd.to_datetime(1349863207154117,unit='us').tz_localize('US/Eastern')
Out[6]: Timestamp('2012-10-10 10:00:07.154117-0400', tz='US/Eastern')

如果你的时间是UTC,但你想要的是另一个tz。

In [9]: pd.to_datetime(1349863207154117,unit='us').tz_localize('UTC').tz_convert('US/Eastern')
Out[9]: Timestamp('2012-10-10 06:00:07.154117-0400', tz='US/Eastern')

或者这个

In [10]: pd.to_datetime(1349863207154117,unit='us',utc=True).tz_convert('US/Eastern')
Out[10]: Timestamp('2012-10-10 06:00:07.154117-0400', tz='US/Eastern')