如何计算Python Pandas序列中时间戳对应的总运行时长(时/分/秒)
报错原因
你遇到的类型报错核心原因是:ELAPSED_TIME列当前存储的是datetime.time类型,该类型仅代表24小时内的某个时间点,不属于可做算术求和的时间差类型,所以无法直接执行sum()操作。你之前用pd.to_datetime转换不生效,是因为该方法是用来转换时间点的,你需要使用转换时间差的专用方法pd.to_timedelta。
解决代码
步骤1:转换ELAPSED_TIME为时间差类型
import pandas as pd # 先转字符串再转timedelta类型,适配你当前列的存储格式 df_values['ELAPSED_TIME'] = pd.to_timedelta(df_values['ELAPSED_TIME'].astype(str))
步骤2:计算总运行时长
# 直接对timedelta类型列求和 total_duration = df_values['ELAPSED_TIME'].sum() # 格式化为HH:MM:SS的字符串格式,得到00:00:48的结果 total_str = str(total_duration).split()[-1].split('.')[0] # 如果你需要给每一行都赋值总时长,再执行以下代码 df_values['TOTAL'] = total_str
不同单位换算方法
如果需要输出不同单位的总时长数值,可以直接通过timedelta的内置方法计算:
- 总秒数:
total_seconds = total_duration.total_seconds() - 总分钟数:
total_minutes = total_duration.total_seconds() / 60 - 总小时数:
total_hours = total_duration.total_seconds() / 3600
内容的提问来源于stack exchange,提问作者gene
相关产品推荐
相关产品推荐

