Creating multiple columns in pandas aggregation function

I would like to create multiple columns when re-fetching a pandas DataFrame, as a built-in ohlc method.

def mhl(data): return pandas.Series([np.mean(data),np.max(data),np.min(data)],index = ['mean','high','low']) ts.resample('30Min',how=mhl) 

Dying off with

 Exception: Must produce aggregated value 

Any suggestions? Thanks!

+8
python pandas time-series
source share
1 answer

You can pass the function dictionary to the resample method:

 In [35]: ts Out[35]: 2013-01-01 00:00:00 0 2013-01-01 00:15:00 1 2013-01-01 00:30:00 2 2013-01-01 00:45:00 3 2013-01-01 01:00:00 4 2013-01-01 01:15:00 5 ... 2013-01-01 23:00:00 92 2013-01-01 23:15:00 93 2013-01-01 23:30:00 94 2013-01-01 23:45:00 95 2013-01-02 00:00:00 96 Freq: 15T, Length: 97 

Create a function dictionary:

 mhl = {'m':np.mean, 'h':np.max, 'l':np.min} 

Pass the dictionary to the how resample parameter:

 In [36]: ts.resample("30Min", how=mhl) Out[36]: hml 2013-01-01 00:00:00 1 0.5 0 2013-01-01 00:30:00 3 2.5 2 2013-01-01 01:00:00 5 4.5 4 2013-01-01 01:30:00 7 6.5 6 2013-01-01 02:00:00 9 8.5 8 2013-01-01 02:30:00 11 10.5 10 2013-01-01 03:00:00 13 12.5 12 2013-01-01 03:30:00 15 14.5 14 
+8
source share

All Articles