2013-02-15 28 views
8

Yerleşik ohlc yöntemi gibi bir panda DataFrame'i yeniden örneklerken birden fazla sütun oluşturmak istiyorum.Pandalar toplama işlevinde birden çok sütun oluşturma

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 

Herhangi önerilerle Dies? Teşekkürler!

cevap

8

Sen resample yöntemine fonksiyonların bir sözlük geçirebilirsiniz:

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 
:

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

resample ait how parametreye sözlüğü Pass:

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 

fonksiyonları bir sözlük oluştur

+2

Kullanmak için yaklaşık 10x daha hızlıdır. nt "np.mean' kullanmaktan daha iyidir. Aynı şey "min" ve "max" için de geçerli –

+2

Çoğu sütun için bir varsayılan belirleme yolu var mı (ör. "Mean" yerine "toplam") ve ardından tek bir sütun için yöntemi geçersiz kılmanın bir yolu var mı? –

+0

Düzgün numara: Hatta, işlevlerin sözlüğünün (sütunlar için) bir sözlüğünü (örneğin sütunlar) iletebilirsiniz, böylece: 'mhl = {'data_column_1': {'resultA': np.mean, 'resultB': max}, 'data_column_2' : {'resultC': dk, 'sonuçD': toplam}} –

İlgili konular