【问题标题】:Convert SAS numeric to python datetime将 SAS 数字转换为 python 日期时间
【发布时间】:2015-01-11 11:09:44
【问题描述】:

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

我试过了:

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

我得到像“1970-01-01 00:00:01.725480”这样的数字

【问题讨论】:

  • 不请自来的建议:如果您提供所需的输出,它确实有助于回答者。换句话说,我们知道 1970 年左右的日期可能是错误的,但我们仍然不知道您期望得到什么。

标签: python datetime pandas format


【解决方案1】:

您需要内置 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))
) 

【讨论】:

  • 完美!!非常感谢,这将非常方便。
  • @Chris 注意:根据源数据的 dtype,您可能需要将 s 强制为普通的 int。我会相应地修改答案。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-07-24
  • 2016-08-30
  • 2022-01-14
  • 1970-01-01
  • 2021-12-30
相关资源
最近更新 更多