首页 > 解决方案 > Pandas - 如何使用 pandas / numpy 在数据框 / 列中求和时间

问题描述

df 与 HH:MM:SS 中的时间列

Input:
    Time
    10:00:00
    10:00:00
    10:00:00
    10:00:00

当我尝试求和时,输出是

1 day 16:00:00

我需要这样的地方

Output:
Time
40:00:00

标签: pythonpandasdatetimetimepivot

解决方案


我通过以下方式创建了您的系列:

s = pd.Series([pd.Timedelta('10:00:00')] * 4)

所以它的完整打印输出是:

0   10:00:00
1   10:00:00
2   10:00:00
3   10:00:00
dtype: timedelta64[ns]

问题是s.sum()默认格式化为Timedelta('1 days 16:00:00'),因此要按照自己的方式格式化,请编写以下函数:

def tdFormat(td):
    nn = td.seconds
    secs = int(nn % 60)
    nn = nn // 60
    mins = int(nn % 60)
    nn = nn // 60 + td.days * 24
    return f'{nn:02d}:{mins:02d}:{secs:02d}'

并将总和生成为:

tdFormat(s.sum())

结果是:

'40:00:00'

推荐阅读