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

Pandas如何将赛车m:ss.000/ss.000格式计时数据转换为秒数

赛车计时数据转总秒数简洁实现方案

针对两种格式(ss.000秒.毫秒、m:ss.000分:秒.毫秒)的圈速/分段计时数据,不需要手动写字符串拆分逻辑,用pandas原生时间差解析方法即可实现批量转换,代码更简洁、兼容性更强。


实现步骤

  • 首先注意原始数据构造时,带冒号的分秒格式值需要存储为字符串类型,否则Python会把1:13.564识别为非法语法,正确的测试DataFrame构造如下:
import pandas as pd

df = pd.DataFrame(
    [["48.004", "1:13.564"], ["38.965", "58.223"], ["45.630", "1:10.084"]],
    columns=["S1", "S2"]
)
  • 编写单值转换函数,用pd.to_timedelta自动识别时间格式,统一输出总秒数:
def to_seconds(time_val):
    time_str = str(time_val)
    # 带冒号的格式直接按分:秒.毫秒解析,不带冒号的补秒单位后解析
    parse_str = time_str if ":" in time_str else f"{time_str}s"
    return pd.to_timedelta(parse_str).total_seconds()
  • 批量转换DataFrame所有计时列,需要修改列名的话直接重命名即可:
# 全表批量转换
df = df.applymap(to_seconds)
# 重命名为目标列名
df.columns = ["A", "B"]

转换结果

执行后输出的结果完全匹配需求:

A       B
0  48.004  73.564
1  38.965  58.223
2  45.630  70.084

方案优势

  • 不需要手动实现字符串拆分、数值换算逻辑,pandas原生解析自带类型兼容、异常值处理能力
  • 扩展性强,后续如果出现h:mm:ss.000(时:分:秒.毫秒)的长圈速格式,不需要修改代码即可直接解析
  • 兼容混合数据类型,原始列里同时存在浮点数格式的秒数、字符串格式的分秒值也能正常转换

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.27 01:15:28