Rounding Pandas Timestamp to minutes
pandas, python
Solution
As of version 0.18, Pandas has built-in datetime-like rounding functionality:
start_ts.round('min') # Timestamp('2014-07-28 00:32:00')
end_ts.round('min') # Timestamp('2014-07-28 08:14:00')
You can also use `.ceil` or `.floor` if you need to force the rounding up or down.
EDIT: The above code works with raw `pd.Timestamp`, as asked by the OP. In case you are working with a `pd.Series`, use the `dt` accessor:
s = pd.Series(pd.to_datetime([1406507532491431000, 1406535228420914000]))
s.dt.round('min')
Output:
0 2014-07-28 00:32:00
1 2014-07-28 08:14:00
dtype: datetime64[ns]
Problem
I want to create a `DateTimeIndex` at 1 minute intervals based on a start and end timestamp (given in microseconds since epoch) with `pd_date_range()`. To do this, I need to round the starting timestamp up and the ending timestamp down. Here is what I have so far: ``` import pandas as pd start = 1406507532491431 end = 1406535228420914 start_ts = pd.to_datetime(start, unit='us') # Timestamp('2014-07-28 00:32:12.491431') end_ts = pd.to_datetime(end, unit='us') # Timestamp('2014-07-28 08:13:48.420914') ``` I want to round: `start_ts` to `Timestamp('2014-07-28 00:32')` and `end_ts` to `Timestamp('2014-07-28 08:14')`. How can I do this?