2013-02-15 19 views
8

パンダのデータフレームを組み込みのohlcメソッドのように再サンプリングしながら複数の列を作成したいと考えています。パンダ集計関数で複数の列を作成する

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

ts.resample('30Min',how=mhl) 

Exception: Must produce aggregated value 

任意の提案で死にますか?ありがとう!

答えて

8

あなたがresample方法に機能の辞書を渡すことができます。

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 

は、関数の辞書を作成します。

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

resamplehowパラメータに辞書を渡す:

In [36]: ts.resample("30Min", how=mhl) 
Out[36]: 
         h  m l 
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 
+2

'mを使うのは約10倍高速ですean "' np.mean'を使うよりも。 ''min ''と 'max''にも同じです –

+2

ほとんどの列にデフォルトを指定する方法はありますか?(例えば、' mean'の代わりに 'sum')を使用して、単一の列のメソッドをオーバーライドしますか? –

+0

素敵なトリック: 'mhl = {'data_column_1':{'resultA':np.mean、 'resultB':max}、 'data_column_2'のような関数の辞書の辞書(列用) :{'resultC':分、 'resultD':合計}} ' –

関連する問題