Split dataframe into n equal time intervals, to groupby, where time interval is (time.max() - time.min())/ n

Viewed 2916

I have a dataframe which I want to split into 5 chunks (more generally n chunks), so that I can apply a groupby on the chunks.

I want the chunks to have equal time intervals but in general each group may contain different numbers of records.

Let's call the data

s = pd.Series(pd.date_range('2012-1-1', periods=100, freq='D'))

and the timeinterval ti = (s.max() - s.min())/n

So the first chunk should include all rows with dates between s.min() and s.min() + ti, the second, all rows with dates between s.min() + ti and s.min() + 2*ti, etc.

Can anyone suggest an easy way to achieve this? If somehow I could convert all my dates into seconds since the epoch, then I could do something like thisgroup = floor(thisdate/ti).

Is there an easy 'pythonic' or 'panda-ista' way to do this?

Thanks very much (and Merry Christmas!),

Robin

2 Answers
Related