【问题标题】:Creating tz aware pandas timestamp objects from an integer从整数创建 tz 感知 pandas 时间戳对象
【发布时间】:2015-06-05 14:09:02
【问题描述】:

我有一个整数,它是 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¨)

【问题讨论】:

    标签: numpy pandas datetime64


    【解决方案1】:
    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')
    

    【讨论】:

    • 理论上纪元时间戳应该是UTC/GMT。但你永远不知道。因为这就是问题所在,实际上没有元数据可以告诉你。
    • 谢谢,我应该看看时间戳。它的格式很疯狂。
    猜你喜欢
    • 2016-02-26
    • 1970-01-01
    • 1970-01-01
    • 2011-07-16
    • 2020-02-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-12-25
    相关资源
    最近更新 更多