Python:像SAS一样将数值转换为日期

Python: Convert numeric value to date like 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

有没有获得正确日期的建议?谢谢! :-) 编辑:当此操作强加于数据框列而不是变量时,代码会是什么样子?

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

就 SAS 而言,纪元是 1960 年 1 月 1 日。您拥有的数字 (5893) 是自该纪元以来经过的天数。因此:

from datetime import timedelta, date

print(date(1960, 1, 1) + timedelta(days=5893))

...会给你想要的结果