Pandas中object类型mm:ss格式时间转%H:%M:%S格式报错求助
解决mm:ss格式时间转换报错的方案
嘿,这个问题我之前也碰到过!核心原因就是格式字符串和实际数据不匹配——你的数据是mm:ss(分:秒)格式,但你用了%H:%M:%S(时:分:秒)的格式去解析,pandas找不到小时部分,自然会报错。给你两种针对性的解决方案,看你的实际需求来选:
方案1:转为HH:MM:SS格式的时间对象/字符串
如果你只是想把mm:ss的分秒值转换成带小时的HH:MM:SS格式(比如23:50变成00:23:50),只需要把格式字符串改成%M:%S,匹配你的原始数据结构:
# 正确解析mm:ss格式,小时默认补00 df_raw['Time-only'] = pd.to_datetime(df_raw['time2'], format='%M:%S').dt.time # 如果需要转为HH:MM:SS格式的字符串,再加一步 df_raw['Time-only-str'] = df_raw['Time-only'].astype(str)
如果你的数据里可能存在不符合mm:ss格式的脏数据(比如空值、乱码),可以加上errors='coerce'参数把无效值转为NaT,避免整个转换失败:
df_raw['Time-only'] = pd.to_datetime(df_raw['time2'], format='%M:%S', errors='coerce').dt.time
方案2:转为时长类型(更适合时间段计算)
如果你的mm:ss是表示时间段(比如视频时长、跑步用时),那用timedelta类型处理会更合理,后续做加减计算也更方便:
# 直接解析mm:ss为时长对象 df_raw['Duration'] = pd.to_timedelta(df_raw['time2']) # 转为HH:MM:SS格式的字符串展示 df_raw['Duration-str'] = df_raw['Duration'].astype(str).str.split().str[-1]
这样处理后,你就可以正常对这些分秒数据进行后续的分析或可视化啦~
内容的提问来源于stack exchange,提问作者Trupti Chaudhari
相关产品推荐
相关产品推荐

