Создание tas-осведомленных объектов отметок времени панд из целого числа

У меня есть целое число, которое является числом микросекунд после эпохи Unix. (по Гринвичу)

Как я могу преобразовать 1349863207154117, используя astype, в 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 ответ

Решение

Я сказал бы, что эта документация в значительной степени покрывает это.

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, но вы хотите его в другой тз.

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')
Другие вопросы по тегам