Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Rounding Pandas Timestamp to minutes

Tags:

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?

like image 260
mchangun Avatar asked Nov 20 '14 03:11

mchangun


People also ask

How do you round a timestamp off?

round() function is used to round the given Timestamp to the specified resolution. Example #1: Use Timestamp. round() function to round the given Timestamp to Daily time series frequency.


1 Answers

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] 
like image 190
Gustavo Bezerra Avatar answered Oct 10 '22 00:10

Gustavo Bezerra