【问题标题】:Python: Convert numeric value to date like SASPython:将数值转换为日期,如 SAS
【发布时间】:2022-01-14 08:14:55
【问题描述】:

我有一个问题。我有一组数值是日期,但显然日期格式错误并且来自 SAS。例如,当格式正确时,我的值 5893 在 SAS 19.02.1976 中。我想在 Python/PySpark 中实现这一点。到目前为止,我发现有一个函数fromtimestamp

但是,当我这样做时,它给出了错误的日期:

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

有任何获得正确日期的建议吗?谢谢! :-) 编辑:当这个操作被强加在数据框列而不是变量上时,代码会是什么样子?

【问题讨论】:

    标签: python date sas


    【解决方案1】:
    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')
    

    【讨论】:

      【解决方案2】:

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

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

      ...会给你想要的结果

      【讨论】:

        猜你喜欢
        • 2015-01-11
        • 2016-08-30
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多