pd.to_datetime转换字符串时间列报格式不匹配错误如何解决
错误原因
你指定的解析格式%H:%M:%S.%f要求输入字符串必须符合「两位小时:两位分钟:两位秒.毫秒」的结构,字符串内需要包含2个冒号分隔3段时间值,但触发报错的样本值42:53.700仅包含1个冒号,只有2段时间值,缺失小时段,和指定格式不匹配,因此解析失败。
额外注意:如果该列存储的是耗时、时长类数据(如比赛用时、视频时长)而非具体时间点,不适合转换为DateTime类型,应当使用时间差类型存储。
解决方法
根据你的数据实际格式选择对应方案:
- 如果整列都是「分钟:秒.毫秒」格式的时长数据:直接补全前导小时位后转换为Timedelta(时间差)类型,是最符合数据语义的方案
Merge_df['Time'] = pd.to_timedelta('00:' + Merge_df['Time'])
- 如果整列都是「分钟:秒.毫秒」格式的当日时间点(小时统一为0点):补全前导小时位后按原格式转DateTime即可
Merge_df['Time'] = pd.to_datetime('00:' + Merge_df['Time'], format='%H:%M:%S.%f')
- 如果列内格式不统一,同时存在带小时位(如
01:12:34.567)和不带小时位的字符串:取消硬编码格式,让pandas自动推断格式解析
Merge_df['Time'] = pd.to_datetime(Merge_df['Time'], infer_datetime_format=True)
解析完成后建议取前5行数据执行print(Merge_df['Time'].head())校验结果,确认没有出现时间字段错位的问题。
内容的提问来源于stack exchange,提问作者harsh
相关产品推荐
相关产品推荐

