pandas中如何将含超24小时的Object时长字符串转为DateTime类型
问题解决思路
错误原因分析
pd.to_datetime用于转换时间点数据,其%H格式符仅支持0-23范围内的小时值,你的数据包含35:00这类超过24小时的时长(时间段),天然不符合datetime的格式要求,所以第一次转换报错。- 你后续使用的
%HH:%MM是错误的格式写法:标准格式符中%M代表分钟,额外添加的H和M会要求原始字符串中存在对应字符,因此匹配2:00这类正常数据时也会报错。
正确处理方案
时长类数据更适合转换为pandas的Timedelta(时间差)类型,适配任意长度的时间段计算需求,转换代码如下:
# 一次性处理两列时长数据 duration_cols = ['Planned Hours', 'Actual Hours'] for col in duration_cols: # 给原始时分格式补全秒位,适配Timedelta的识别规则 time[col] = pd.to_timedelta(time[col] + ':00')
如果你的业务场景必须使用datetime类型,可以在Timedelta的基础上叠加基准日期转换,示例如下:
# 以1900-01-01为基准日期,将时长转换为对应时间点 time['Actual Hours'] = pd.to_datetime('1900-01-01') + pd.to_timedelta(time['Actual Hours'] + ':00')
补充说明
转换为Timedelta类型后,你可以直接对时长数据做求和、求差、统计平均值等运算,完全适配工时类数据的分析需求。
内容的提问来源于stack exchange,提问作者Rajaa Monnapillai
相关产品推荐
相关产品推荐

