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

将SAS date9格式日期转换为Python datetime的技术咨询

解决SAS Date9格式解析问题 & 关于pandas.to_datetime的实现疑问

一、如何解析SAS Date9格式的日期

首先,SAS的Date9格式是DDMMMYYYY(比如12FEB1993代表1993年2月12日),dateutil.parser.parse和pandas默认自动解析失败的原因是:这种格式不属于ISO标准或常见通用格式,自动解析器无法准确推断规则。

解决方法非常直接——给pandas.to_datetime明确指定格式参数,不需要依赖自动推断:

import pandas as pd

# 假设你的日期列名为'date_col'
df['date_col'] = pd.to_datetime(df['date_col'], format='%d%b%Y', errors='coerce')

参数说明:

  • %d:匹配两位数字的日期(01-31)
  • %b:匹配英文月份缩写(Jan/Feb/Mar...,大小写不敏感,不管是FEB还是feb都能识别)
  • errors='coerce':可选配置,将无法解析的字符串转为NaT,避免报错中断程序

如果你的CSV里日期前面附带了序号(比如示例中的0 12FEB1993),需要先提取纯日期字符串再解析:

# 按空格分割字符串,提取第二个元素(日期部分)
df['date_str'] = df['raw_date_col'].str.split().str[1]
df['parsed_date'] = pd.to_datetime(df['date_str'], format='%d%b%Y')

二、pandas.to_datetime是否基于dateutil.parser实现?

不完全是。pandas的to_datetime有一套独立的内置解析逻辑:
当你不指定format参数时,它会优先用内置解析器处理常见标准格式(比如ISO 8601),只有当内置解析器无法识别时,才会 fallback 到dateutil.parser.parse做通用格式推断。

简单来说,dateutil是pandas自动解析的备选方案之一,而非唯一依赖。pandas针对标准日期格式做了专属优化,在性能和准确性上都优于通用的dateutil解析器。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.26 08:49:13