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

问题描述 投票:2回答:1

我有一个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的%00:00:%M:%S,但是当我执行以下代码时:

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

我有两个例外:

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

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

有办法解决这个问题吗?

python pandas datetime exception
1个回答
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
© www.soinside.com 2019 - 2024. All rights reserved.