#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')