今天在处理时间数据格式的时候出现了下面这种错误:
ValueError: time data ‘19970004’ does not match format ‘%Y%m%d’ (match)
转变时间数据格式的代码如下:
data['used_time'] = (pd.to_datetime(data['creatDate'], format='%Y%m%d') -
pd.to_datetime(data['regDate'], format='%Y%m%d')).dt.days
根据错误提示,出现错误的原因是数据中有时间出错的格式。
通过修改在to_datetime()函数里面有errors参数,可以解决这个问题。
data['used_time'] = (pd.to_datetime(data['creatDate'], format='%Y%m%d', errors='coerce') -
pd.to_datetime(data['regDate'], format='%Y%m%d', errors='coerce')).dt.days
errors参数共有三种赋值,默认的值为‘raise’,出现不符合规范的解析时就会报错。可以将errors参数赋值为‘coerce’,在解析的过程中将出错的时间格式设置为NaT。如果不想处理错误的时间格式,可以将errors赋值为‘ignore’,这样就还是原来的格式。
errors{‘ignore’, ‘raise’, ‘coerce’}, default ‘raise’
If ‘raise’, then invalid parsing will raise an exception.
If ‘coerce’, then invalid parsing will be set as NaT.
If ‘ignore’, then invalid parsing will return the input.