Home > Software engineering >  sum() not working on lists of Timedelta objects
sum() not working on lists of Timedelta objects

Time:09-23

I have a list of pandas.Timedelta objects

In [31]: r
Out[31]: [Timedelta('0 days 00:00:12'), Timedelta('0 days 00:10:02')]

I can sum them up with the plus operator

In [32]: r[0]   r[1]
Out[32]: Timedelta('0 days 00:10:14')

But not using sum()

In [33]: sum(r)
---------------------------------------------------------------------------
TypeError                                 Traceback (most recent call last)
<ipython-input-33-1ab9ba54065b> in <module>
----> 1 sum(r)

TypeError: unsupported operand type(s) for  : 'int' and 'Timedelta'

Is that expected? I would expect sum() to work in this case. Is there a way to sum the pandas.Timedelta objects in the list without explicitly iterating over it?

CodePudding user response:

It makes more sense to use a pandas Series, since we are already use the pandas Timedelta:

In [3]: s = pd.Series([Timedelta('0 days 00:00:12'), Timedelta('0 days 00:10:02')])

In [4]: s.sum()
Out[4]: Timedelta('0 days 00:10:14')

CodePudding user response:

From the docs for the sum function

This function is intended specifically for use with numeric values and may
reject non-numeric types.

However, you can make it work by passing in a start value (which is integer 0 by default)

from datetime import timedelta
r = [timedelta(0), timedelta(days=1)]
sum(r, timedelta(0))
  • Related