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

如何计算timedelta列的平均值并去除结果中的'0 days'?

解决timedelta列去'0 days'且保留计算能力的问题

核心要点

要兼顾干净的时分秒显示和数值计算能力,绝对不能把列转成纯字符串——必须保留timedelta64[ns]类型,只在显示层面做格式化。

具体操作

1. 生成格式化显示列

假设你的DataFrame是df,目标列叫Tempo Formatado,用dt.strftime直接提取时分秒:

# 新增一列用于展示,原列保留用于计算
df['Tempo Exibicao'] = df['Tempo Formatado'].dt.strftime('%H:%M:%S')

得到的Tempo Exibicao列就是你要的格式:

0 00:27:00
1 01:22:00
2 00:52:00
3 01:04:00
4 00:07:00

2. 计算平均值

直接用原timedelta列计算,再格式化结果:

# 计算平均时长
media = df['Tempo Formatado'].mean()
# 转成分钟精度后格式化
media_formatada = media.round('min').dt.strftime('%H:%M').iloc[0]

输出结果就是00:46,和案例一致。

可选:直接修改显示格式(不新增列)

如果不想多一列,也可以临时修改显示格式,但注意这样会把列转成字符串,后续计算要转回来:

# 临时转成格式化字符串显示
df['Tempo Formatado'] = df['Tempo Formatado'].apply(lambda x: x.strftime('%H:%M:%S'))
# 后续需要计算时转回timedelta
df['Tempo Formatado'] = pd.to_timedelta(df['Tempo Formatado'])

注意事项

  • 始终保留原始的timedelta64[ns]列,避免丢失计算能力
  • 如果你的数据存在超过1天的时长,可以把格式化字符串改成'%H:%M:%S'(自动忽略天数,只显示累计小时)或者'%d days %H:%M:%S'(保留天数)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.01 12:50:01