在Python中使用timedelta计算列表总和

10

我正在努力解决以下问题:

如何对时间增量列表进行求和,例如:

[datetime.timedelta(0, 3600), datetime.timedelta(0, 3600), datetime.timedelta(0, 7200)]

这应该导致 datetime.timedelta(0, 14400),即4小时。

4个回答

22

试试这个,

import datetime
print sum(time_list,datetime.timedelta())

结果:

datetime.timedelta(0, 14400)

1
那个有效,谢谢。 - Into Numbers

8
datetime.timedelta(0,0)作为初始值传递给sum函数。
import datetime

arr = [datetime.timedelta(0, 3600), datetime.timedelta(0, 3600), datetime.timedelta(0, 7200)]

print(sum(arr, datetime.timedelta(0,0)))

输出:

4:00:00

1
你可以使用pandas。
    import pandas as pd
    df=pd.DataFrame([datetime.timedelta(0, 3600), datetime.timedelta(0, 3600), datetime.timedelta(0, 7200)])
    df[0].sum()
    Timedelta('0 days 04:00:00')

1

另一种解决方案:使用{{link1:functools.reduce}},

import operator
import functools
import datetime

dts = [datetime.timedelta(0, 3600), datetime.timedelta(0, 3600), datetime.timedelta(0, 7200)]

result = functools.reduce(operator.add, dts)

print(result)
# 4:00:00

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接