2013-02-15 36 views
8

में एकाधिक कॉलम बनाएं I अंतर्निहित ओएचएलसी विधि जैसे पांडा डेटाफ्रेम को दोबारा शुरू करते समय कई कॉलम बनाना चाहते हैं।पांडा एग्रीगेशन फ़ंक्शन

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 [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 की how पैरामीटर के लिए शब्दकोश दर्रा:

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 

कार्यों का एक शब्दकोश बनाएं

+2

यह "10 मीटर का उपयोग करने के लिए लगभग 10x तेज है ईएन "' np.mean' का उपयोग करने के बजाय। 'न्यूनतम' और 'अधिकतम' –

+2

के लिए भी जाता है क्या अधिकांश स्तंभों के लिए डिफ़ॉल्ट निर्दिष्ट करने का कोई तरीका है (उदा।, 'माध्य' के बजाय' sum') और फिर एक कॉलम के लिए विधि को ओवरराइड करें? –

+0

साफ चाल: आप कार्यों के शब्दकोश के शब्दकोश (कॉलम के लिए) भी पास कर सकते हैं, जैसे: 'mhl = {'data_column_1': {'resultA': np.mean, 'resultB': max}, 'data_column_2' : {'परिणाम सी': न्यूनतम, 'परिणाम डी': योग}} ' –