You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Python中将SAS导出的5位日期转换为datetime格式

SAS日期转Python datetime的解决方法

方法一:用Pandas快速处理(推荐)

如果数据存在Pandas DataFrame中,按以下步骤操作:

  1. 先把object类型的SAS日期列转成数值类型(因为导出的5位数字可能存成了字符串)
  2. 利用pd.to_datetime()指定SAS的基准日期,直接转换

示例代码:

import pandas as pd

# 假设你的DataFrame是df,日期列名为sas_date
df['sas_date'] = pd.to_numeric(df['sas_date'], errors='coerce')  # 转数值,无效值转为NaN
df['converted_date'] = pd.to_datetime(df['sas_date'], origin='1960-01-01', unit='D')

验证示例:

  • 输入33会得到1960-02-03
  • 输入11612会得到1991-10-17,和你给出的SAS日期示例完全匹配

方法二:用Python标准库处理单个值

如果不用Pandas,用纯Python处理单个SAS日期值:

from datetime import datetime, timedelta

def sas_to_py_date(sas_day_str):
    # 先把输入转成整数,处理无效值
    try:
        sas_day = int(sas_day_str)
    except ValueError:
        return None
    # SAS基准日期是1960年1月1日
    base_date = datetime(1960, 1, 1)
    return base_date + timedelta(days=sas_day)

# 测试
print(sas_to_py_date("33"))      # 输出 1960-02-03 00:00:00
print(sas_to_py_date("11612"))   # 输出 1991-10-17 00:00:00

注意事项

  • 必须先把object类型的日期列转为数值,否则直接转datetime会报错
  • 遇到非数字的无效值时,用errors='coerce'转为NaN,或者在自定义函数里捕获异常处理

内容的提问来源于stack exchange,提问作者user19745533

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.22 00:06:18