我有一个使用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
第二栏中的所有重要事项。有没有可以解决这个问题的图书馆,还是我必须自己动手?如果是后者,怎么样?
答案 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())