将SAS数字转换为python datetime

时间:2014-11-14 05:33:19

标签: python datetime pandas format

这可能是一个简单的解决方案,但我如何转换SAS日期时间编号(自1960年1月1日以来的秒数。)pandas列中的一个值的示例是1716470000。

我试过了:

df['PyDatetime'] = pd.to_datetime(df,infer_datetime_format=True)

我得到的数字如'1970-01-01 00:00:01.725480'

1 个答案:

答案 0 :(得分:6)

您需要内置的datetime模块:

import datetime
sastime = 1716470000
epoch = datetime.datetime(1960, 1, 1)
print(epoch + datetime.timedelta(seconds=sastime))

显示:

datetime.datetime(2014, 5, 23, 13, 13, 20) # is this right?

因此,如果您的数据框中包含名为sastime的列,则可以执行以下操作:

epoch = datetime.datetime(1960, 1, 1)
# cast -s- to python int in case it's a string or a numpy.int
df['datetime'] = df['sastime'].apply(
    lambda s: epoch + datetime.timedelta(seconds=int(s))
)