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

如何用Pandas计算DataFrame中三列圈速的平均圈速?

Pandas计算排位赛平均圈速解决方案

核心思路

要计算平均圈速,必须先把分:秒.毫秒的字符串格式转换成可计算的数值(比如总毫秒数),计算平均值后再转回原时间格式。

步骤与代码

1. 准备示例数据

把你提供的数据转换成Pandas DataFrame:

import pandas as pd

data = {
    'number': [22, 4, 23],
    'position': [1, 2, 3],
    'q1': ['1:26.572', '1:26.103', '1:25.664'],
    'q2': ['1:25.187', '1:25.315', '1:25.452'],
    'q3': ['1:26.714', '1:26.869', '1:27.079']
}
df = pd.DataFrame(data)

2. 定义时间格式转换函数

  • 字符串转总毫秒数:拆分分钟、秒和毫秒,计算总时长
  • 总毫秒数转回字符串格式:反向拆分后补零,保证格式统一
def time_str_to_ms(time_str):
    mins, sec_ms = time_str.split(':')
    sec, ms = sec_ms.split('.')
    return int(mins)*60*1000 + int(sec)*1000 + int(ms)

def ms_to_time_str(total_ms):
    mins = total_ms // (60*1000)
    remaining_ms = total_ms % (60*1000)
    sec = remaining_ms // 1000
    ms = remaining_ms % 1000
    return f"{mins}:{sec:02d}.{ms:03d}"

3. 转换圈速列并计算平均值

先把q1/q2/q3转成毫秒数,计算每行的平均值,再转回时间格式:

# 转换q1-q3列为毫秒数
df[['q1_ms', 'q2_ms', 'q3_ms']] = df[['q1', 'q2', 'q3']].applymap(time_str_to_ms)

# 计算平均毫秒数
df['avg_ms'] = df[['q1_ms', 'q2_ms', 'q3_ms']].mean(axis=1)

# 转回时间格式得到平均圈速
df['avg_lap'] = df['avg_ms'].apply(ms_to_time_str)

# 可选:删除中间辅助列
df = df.drop(['q1_ms', 'q2_ms', 'q3_ms', 'avg_ms'], axis=1)

4. 最终结果

运行后df新增avg_lap列,结果如下:

number  position        q1        q2        q3    avg_lap
0      22         1  1:26.572  1:25.187  1:26.714  1:26.158
1       4         2  1:26.103  1:25.315  1:26.869  1:26.096
2      23         3  1:25.664  1:25.452  1:27.079  1:26.065

注意事项

  • 如果存在缺失值(比如某车手没跑q3),mean()会自动跳过NaN值,结果依然准确
  • 转换函数里的补零操作(sec:02d、ms:03d)保证输出格式和原数据一致,避免出现1:6.57这类不规范格式

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.29 05:11:23