将Pandas系列对象的所有格式不一致的字符串元素强制转换为datetime.time类型

时间:2018-08-31 02:42:56

标签: python pandas datetime exception

我有一个Pandas Series对象(df.Lateness),其中每个元素都是一个字符串,但格式不一致:

0    00:01:48
1    00:07:38
2    00:04:44
3    00:12:18
4           0
5           0
6    00:01:36
7           0
8           0
9           0

我想将它们转换为datetime.time类型,其中0代表%H:%M:%S的00:00:00,但是当我执行以下代码时:

pd.to_datetime(df.Lateness, format = '%H:%M:%S')

我有两个例外:

  

TypeError:无法识别的值类型:类'str'

     

ValueError:时间数据'0'与格式'%H:%M:%S'(匹配)不匹配

有没有办法解决这个问题?

1 个答案:

答案 0 :(得分:0)

我不确定是否适合您,但我认为将非格式值转换为NaT会更方便:

result = pd.to_datetime(lateness, format='%H:%M:%S', errors='coerce').dt.time

结果:

0    00:01:48
1    00:07:38
2    00:04:44
3    00:12:18
4         NaT
5         NaT
6    00:01:36
7         NaT
8         NaT
9         NaT

如果您仍想使用NaT00:00:00转换为fillna

result.fillna(pd.to_datetime('00:00:00', format='%H:%M:%S').time())

结果:

0    00:01:48
1    00:07:38
2    00:04:44
3    00:12:18
4    00:00:00
5    00:00:00
6    00:01:36
7    00:00:00
8    00:00:00
9    00:00:00