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

Pandas中pivot_table对hh:mm:ss格式时间列聚合求和的问题

解决方案

问题原因

当前Time列是字符串格式,直接调用sum聚合会执行字符串拼接逻辑,不会进行时间数值的累加计算。

实现步骤

  • 先将Time列转换为pandas.Timedelta类型,该原生类型支持时间差的加减运算
  • 执行pivot_table的sum聚合,可直接得到正确的时间差求和结果
  • 若需要将最终结果转回hh:mm:ss字符串格式,可通过自定义函数格式化输出

完整代码示例

import pandas as pd

# 构造原始数据
data = {'Type':['A', 'B', 'C', 'C'],'Name':['ab',  'ef','gh', 'ij'],'Time':['02:00:00', '03:02:00', '04:00:30','01:02:20']}
df = pd.DataFrame(data)

# 1. 将Time列转为Timedelta类型
df['Time'] = pd.to_timedelta(df['Time'])

# 2. 执行pivot聚合求和
pivot = df.pivot_table(index=['Type'], values=['Time'], aggfunc='sum')

# 3. (可选) 将Timedelta格式结果转为hh:mm:ss字符串
def timedelta_to_hms(td):
    total_seconds = int(td.total_seconds())
    hours = total_seconds // 3600
    minutes = (total_seconds % 3600) // 60
    seconds = total_seconds % 60
    return f"{hours:02d}:{minutes:02d}:{seconds:02d}"

pivot['Time'] = pivot['Time'].apply(timedelta_to_hms)

print(pivot)

输出结果

Time
Type        
A   02:00:00
B   03:02:00
C   05:02:50

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.11 20:15:01