Python: Преобразуйте числовое значение в дату, как SAS

#python #date #sas

#питон #Дата #САС

Вопрос:

У меня есть вопрос. У меня есть набор числовых значений, которые являются датой, но, по-видимому, дата неправильно отформатирована и выходит из SAS. Например, у меня есть значение 5893, которое находится в SAS 19.02.1976 при правильном форматировании. Я хочу добиться этого в Python/PySpark. Из того, что я обнаружил до сих пор, следует, что есть функция fromtimestamp .

Однако, когда я это делаю, это приводит к неправильной дате:

 value = 5893 date = datetime.datetime.fromtimestamp(value) print(date) 1970-01-01 02:38:13  

Есть какие-нибудь предложения, чтобы узнать правильную дату? Спасибо! 🙂 ИЗМЕНИТЬ: И как будет выглядеть код, если эта операция будет наложена на столбец фрейма данных, а не на переменную?

Ответ №1:

Эпоха, насколько это касается SAS, — 1 января 1960 года. Число, которое у вас есть (5893), — это количество дней, прошедших с той Эпохи. Следовательно:

 from datetime import timedelta, date  print(date(1960, 1, 1)   timedelta(days=5893))  

…даст вам желаемый результат

Ответ №2:

 import numpy as np import pandas as pd  ser = pd.Series([19411.0, 19325.0, 19325.0, 19443.0, 19778.0]) ser = pd.to_timedelta(ser, unit='D')   pd.Timestamp('1960-1-1')