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

如何计算时分秒格式时间字符串的均值?df[].mean()方法失效求助

解决时分秒字符串列求均值的方法

直接用df[列名].mean()无效是因为列的数据类型是字符串,pandas没法直接对字符串做均值计算,得先把字符串转为**时间差(timedelta)**类型,再计算均值,最后按需转回字符串格式。

具体步骤:

  1. 转换为timedelta类型
    使用pd.to_timedelta()方法将字符串列转为timedelta类型,这个方法能直接识别时分秒带微秒的格式:

    df['time_col'] = pd.to_timedelta(df['time_col'])
    
  2. 计算均值
    转换后就可以正常用mean()方法计算均值了:

    mean_time = df['time_col'].mean()
    
  3. 转回时分秒字符串(可选)
    如果需要把结果转回类似原格式的字符串,可通过两种方式处理:

    # 方法1:借助Timestamp格式化
    mean_str = (pd.Timestamp('1970-01-01') + mean_time).strftime('%H:%M:%S.%f')
    # 方法2:手动拆分计算格式
    total_seconds = mean_time.total_seconds()
    hours = int(total_seconds // 3600)
    minutes = int((total_seconds % 3600) // 60)
    seconds = total_seconds % 60
    mean_str = f"{hours}:{minutes:02d}:{seconds:.6f}"
    

完整示例代码

import pandas as pd

# 模拟数据
data = {'time': ['0:00:34.805936', '0:01:17.946625', '0:01:41.294841']}
df = pd.DataFrame(data)

# 转换为timedelta
df['time'] = pd.to_timedelta(df['time'])

# 计算均值
mean_timedelta = df['time'].mean()

# 转回字符串格式
mean_str = (pd.Timestamp('1970-01-01') + mean_timedelta).strftime('%H:%M:%S.%f')
print(mean_str)  # 输出示例:0:01:04.682467

注意点

  • 只要是合法的时分秒/天数格式,pd.to_timedelta()都能处理,无需担心格式细微差异(比如无秒数、小时数大于24)。
  • 计算得到的mean_time是Timedelta对象,可直接用于后续时间运算,不一定非要转回字符串。

内容的提问来源于stack exchange,提问作者Шапагат Аман

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.23 03:22:40