Python中mm:ss格式字符串转hh:mm:ss及timedelta64的报错解决
解决mm:ss格式字符串转pandas timedelta64类型的问题
问题原因
pd.to_timedelta() 默认要求字符串为 hh:mm:ss 或包含天数的格式,直接传入 mm:ss 格式会被误判为 hh:mm,触发 ValueError: expected hh:mm:ss format 错误。
解决方案
方法1:补全00:前缀
给每个mm:ss字符串前添加00:,将格式转为00:mm:ss,让pd.to_timedelta()正确识别为小时:分钟:秒:
# 补全前缀 df2['Chip Time'] = '00:' + df2['Chip Time'] # 转换为timedelta64类型 df2['Chip Time'] = pd.to_timedelta(df2['Chip Time'])
方法2:拆分分钟和秒计算总时长
如果存在超过60分钟的场景,可拆分字符串中的分钟和秒,计算总秒数后再转换:
# 拆分分钟和秒并转为数值 minutes, seconds = df2['Chip Time'].str.split(':', expand=True).astype(int).values.T # 计算总秒数并转为timedelta df2['Chip Time'] = pd.to_timedelta(minutes * 60 + seconds, unit='s')
方法3:用datetime辅助解析
借助datetime模块解析时间格式,再转为timedelta:
from datetime import datetime def convert_to_timedelta(time_str): t = datetime.strptime(time_str, '%M:%S') return pd.Timedelta(minutes=t.minute, seconds=t.second) df2['Chip Time'] = df2['Chip Time'].apply(convert_to_timedelta)
内容的提问来源于stack exchange,提问作者Chukwunonso Jide
相关产品推荐
相关产品推荐

