AspiringCoder
AspiringCoder

Reputation: 311

TypeError: unsupported operand type(s) for +: 'Timedelta' and 'datetime.time - python

My code is the following:

 import datetime
 df_time_size=result1.loc[:, ['time']].copy()
 time_interval = datetime.timedelta(minutes=number)
 df_time_size.loc[:, 'time'] = (df_time_size.loc[:, 'time'] + time_interval)

My df_time_size is a datetime column with 12:00:00 I want it to store in that column whatever the times are plus the time_interval so if number=5 the first entry would be 12:05:00 however, I get the following error: TypeError: unsupported operand type(s) for +: 'Timedelta' and 'datetime.time' for the line: df_time_size.loc[:, 'time'] = (df_time_size.loc[:, 'time'] + time_interval) I tried:

from datetime import datetime, timedelta
time_interval = timedelta(minutes = number)

Also tried:

 df_time_size.loc[:, 'time']=dt.datetime.combine( df_time_size.loc[:, 'time'] + timedelta)

but both give me the same exact error.

Edited(): My df_time_size is also a datetime df_time_size['time'] = pd.to_datetime(df_time_size['time'], format='%H:%M:%S').dt.time

Upvotes: 0

Views: 2553

Answers (1)

davidbilla
davidbilla

Reputation: 2222

This works for me. Is your df_time_size['time'] a datetime type?

time_interval = datetime.timedelta(minutes=5)
df_time_size = pd.DataFrame({'time': ['12:00:00']})
df_time_size['time'] = pd.to_datetime(df_time_size['time'])
df_time_size.loc[:, 'time'] = (df_time_size.loc[:, 'time'] + time_interval)
print(df_time_size)

Output:

                 time
0 2020-03-15 12:05:00

If I don't convert df_time_size['time'] to a datetime type, it still works.

time_interval = datetime.timedelta(minutes=5)
df_time_size = pd.DataFrame({'time': ['12:00:00']})
df_time_size.loc[:, 'time'] = (df_time_size.loc[:, 'time'] + time_interval)
print(df_time_size)

Output:

      time
0 12:05:00

Can you post the df you are having? It will better explain the problem you are having.

Upvotes: 1

Related Questions