Reputation: 4807
import timedelta as td I have a date time and I want to add an array of hours to it.
i.e.
Date[0]
datetime.datetime(2011, 1, 1, 0, 0)
Date[0] + td(hours=9)
datetime.datetime(2011, 1, 1, 9, 0)
hrs = [1,2,3,4]
Date[0] + td(hours=hrs)
But obviously it is not supported.
Date array above is a giant array of size 100X1 and I want to add hrs = [1,2,3,4] to each row of Date to get a datetime array of size 100x4. So, a for loop is not going to work in my case.
Upvotes: 1
Views: 1480
Reputation: 474231
Use a nested list comprehension and .replace()
method. Sample for a list with 2 datetimes:
In [1]: from datetime import datetime
In [2]: l = [datetime(2011, 1, 1, 0, 0), datetime(2012, 1, 1, 0, 0)]
In [3]: hours = [1, 2, 3, 4]
In [4]: [[item.replace(hour=hour) for hour in hours] for item in l]
Out[4]:
[[datetime.datetime(2011, 1, 1, 1, 0),
datetime.datetime(2011, 1, 1, 2, 0),
datetime.datetime(2011, 1, 1, 3, 0),
datetime.datetime(2011, 1, 1, 4, 0)],
[datetime.datetime(2012, 1, 1, 1, 0),
datetime.datetime(2012, 1, 1, 2, 0),
datetime.datetime(2012, 1, 1, 3, 0),
datetime.datetime(2012, 1, 1, 4, 0)]]
As a result a 2x4 list of lists.
Upvotes: 2