You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何基于格式差异优化pandas时长列转总秒数的实现?

解决方案

直接通过判断时间字符串的冒号数量或者正则匹配区分两种格式,统一转换后批量处理,无需拆分索引区间:

方法一:基于冒号数量判断

利用字符串里的冒号数量区分格式:只有1个冒号的是mm:ss.ms,需补00:前缀;有2个冒号的是h:mm:ss.ms,直接保留原格式。代码如下:

# 标记出包含小时的行(冒号数量为2)
has_hour = filt_data["Finish"].str.count(':') == 2

# 统一生成合法的timedelta字符串:带小时的保留原串,不带的补00:前缀
timedelta_str = filt_data["Finish"].where(has_hour, '00:' + filt_data["Finish"])

# 批量转换为总秒数
filt_data["F"] = pd.to_timedelta(timedelta_str).dt.total_seconds()

方法二:正则替换

用正则匹配不含小时的时间格式,自动补上前缀:

# 正则匹配开头为「数字:数字.数字」的格式,替换为00:前缀
timedelta_str = filt_data["Finish"].str.replace(r'^(\d+:\d+\.\d+)$', r'00:\1', regex=True)

# 批量转换为总秒数
filt_data["F"] = pd.to_timedelta(timedelta_str).dt.total_seconds()

两种方法都能一次性完成转换,不需要拆分生成F1、F2再合并,效率更高且代码更简洁。

内容的提问来源于stack exchange,提问作者Hansson

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.10 06:46:08