我需要处理一个字符串数据框(顺便说一句,跑步课程),其中人们在一小时之前完成,因此它的格式为“%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. 您可能想尝试: - 如果您的字符串具有一致的格式,则传递
; - 如果您的字符串都是 ISO8601 但格式不一定完全相同,则传递format
; - 传递format='ISO8601'
,将为每个元素单独推断格式。您可能想同时使用format='mixed'
这个。dayfirst
所以我尝试了 format='mixed',但我也收到此错误:
df['time'] = pd.to_datetime(df['time'],format='mixed').dt.time
DateParseError:小时必须在 0..23: 57:43,位置 4
您有什么想法来妥善处理这个问题?