SAS date9格式为python datetime

时间:2018-04-26 18:09:37

标签: python pandas

我有一个使用SAS的[date9.][1]输出格式化的CSV。但是dateutil.parser.parse无法识别它,pandas.to_datetime也没有(也是一个问题,to_datetime是否使用dateutil.parser?)。

他们扔了:

  File "C:\redacted\dateutil\parser.py", line 559, in parse
    raise ValueError("Unknown string format")

ValueError: Unknown string format

格式如下:

0         12FEB1993
1         12FEB1993
...
16        16NOV1972
17        01SEP2001
18        06JUL2000
19        01FEB2014

第二栏中的所有重要事项。有没有可以解决这个问题的图书馆,还是我必须自己动手?如果是后者,怎么样?

1 个答案:

答案 0 :(得分:3)

您可以将format参数传递给pandas.to_datetime()吗?类似于:pandas.to_datetime(date_column, format='%d%b%Y')

如果您可以将日期作为字符串,那么采用strptime格式的任何日期解析函数都应该使用模式%d%b%Y

>>> datetime.datetime.strptime('12FEB1993', '%d%b%Y')
datetime.datetime(1993, 2, 12, 0, 0)

编辑:

看起来pandas.to_datetime()会产生pandas.Timestamp个对象,由于resolution limits限制为〜{584年},或最长年限为2262年。

因为您的日期字符串超出了该范围,所以您可以将字符串作为字符串读取,然后调用apply将值转换为date个对象:

import datetime
my_df['date'] = my_df['date_text'].apply(lambda x: datetime.datetime.strptime(x, '%d%b%Y').date())