我有一个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'(匹配)不匹配
有没有办法解决这个问题?
答案 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
如果您仍想使用NaT
将00: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