过去几个小时我一直难过,试图解决以下问题。
在我从自动系统获得的大型数据集中,有一个DATE_TIME值,对于午夜时分的行,其值不会像整个小时一样: 12-MAY-2017 0:16:20
当我尝试将其转换为日期(以便其可用于转换)时,如下所示:
df['DATE_TIME'].astype('datetime64[ns]')
我收到以下错误:
Error parsing datetime string "12-MAY-2017 0:16:20" at position 3
我尝试写一些REGEX来拉出每一块但是无法得到任何工作,因为小时可以分别是1或2个字符。它似乎也不是为每个peice写正则表达式的理想解决方案。
有关于此的任何想法吗?
答案 0 :(得分:3)
尝试使用pandas.to_datetime()方法:
df['DATE_TIME'] = pd.to_datetime(df['DATE_TIME'], errors='coerce')
参数errors='coerce'
会处理那些无法转换为datatime
dtype的字符串
答案 1 :(得分:3)
我认为你只需要pandas.to_datetime
:
df = pd.DataFrame({'DATE_TIME':['12-MAY-2017 0:16:20','12-MAY-2017 0:16:20']})
print (df)
DATE_TIME
0 12-MAY-2017 0:16:20
1 12-MAY-2017 0:16:20
df['DATE_TIME'] = pd.to_datetime(df['DATE_TIME'])
print (df)
DATE_TIME
0 2017-05-12 00:16:20
1 2017-05-12 00:16:20
按astype
转换为numpy似乎problematic,因为需要strings in ISO 8601 date or datetime format
:
df['DATE_TIME'].astype('datetime64[ns]')
ValueError:在位置3解析日期时间字符串“12-MAY-2017 0:16:20”时出错
编辑:
如果日期时间被破坏(某些字符串或整数),则使用MaxU answer。