如何处理 pandas to_datetime 中的可选小时格式?

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

我需要处理一个字符串数据框(顺便说一句,跑步课程),其中人们在一小时之前完成,因此它的格式为“%M:%S”,例如:“54:45”,有些人在一小时后完成,所以格式为“%H:%M:%S”,例如:“1:05:11”

这里有一些要测试的代码:

df = pd.DataFrame({'time': ['1:01:16','1:05:11','1:08:43','1:03:30','57:43']})

pandas 不喜欢混合格式并告诉我这个错误:

df['time'] = pd.to_datetime(df['time'],format='%H:%M:%S').dt.time

ValueError:时间数据“57:43”与格式“%H:%M:%S”不匹配,位于 位置 4. 您可能想尝试: - 如果您的字符串具有一致的格式,则传递

format
; - 如果您的字符串都是 ISO8601 但格式不一定完全相同,则传递
format='ISO8601'
; - 传递
format='mixed'
,将为每个元素单独推断格式。您可能想同时使用
dayfirst
这个。

所以我尝试了 format='mixed',但我也收到此错误:

df['time'] = pd.to_datetime(df['time'],format='mixed').dt.time

DateParseError:小时必须在 0..23: 57:43,位置 4

您有什么想法来妥善处理这个问题?

python pandas time timestamp string-formatting
1个回答
0
投票

您可以使用

errors='coerce'
参数分别转换两种格式,对于不匹配的格式,使用
NaT
 替换此值:
Series.fillna

© www.soinside.com 2019 - 2024. All rights reserved.