2013-06-10 22 views
5

वहाँ MultiIndex द्वारा डेटा GroupBy को पांडा में किसी भी अवसर है? इसका मतलब है कि मैं समूह कुंजी समारोह में गुजर रहा हूं न केवल चाबियाँ और डेटाफ्रेम कॉलम को पूर्वनिर्धारित करने के लिए कुंजी और मान?पांडा GroupBy और Multiindex

a = np.array(['foo', 'foo', 'foo', 'bar', 'bar', 'foo', 'foo'], dtype=object) 
b = np.array(['one', 'one', 'two', 'one', 'two', 'two', 'two'], dtype=object) 
c = np.array(['dull', 'shiny', 'dull', 'dull', 'dull', 'shiny', 'shiny'], dtype=object) 
df = pd.DataFrame([a, b, c]).T 
df.columns = ['a', 'b', 'c'] 
df.groupby(['a', 'b', 'c']).apply(len) 

a b c  
bar one dull  1 
    two dull  1 
foo one dull  1 
      shiny 1 
    two dull  1 
      shiny 2 

लेकिन क्या मैं वास्तव में चाहते हैं निम्नलिखित है:

mi = pd.MultiIndex(levels=[['foo', 'bar'], ['one', 'two'], ['dull', 'shiny']], 
        labels=[[0, 0, 0, 0, 1, 1, 1, 1], [0, 0, 1, 1, 0, 0, 1, 1], [0, 1, 0, 1, 0, 1, 0, 1]]) 
#pseudocode 
df.groupby(['a', 'b', 'c'], multi_index = mi).apply(len) 
a b c  
bar one dull  1 
      shiny 0 
    two dull  1 
      shiny 0 
foo one dull  1 
      shiny 1 
    two dull  1 
      shiny 2 

तरह से मैं इसे GroupBy वस्तु पर अतिरिक्त आवरण के निर्माण में है देखते हैं। या शायद यह फीचर पांडा दर्शन के लिए अच्छी तरह से फिट है और इसे पांडा lib में शामिल किया जा सकता है?

उत्तर

6

सिर्फ अनुक्रमणः और fillna!

In [14]: df.groupby(['a', 'b', 'c']).size().reindex(index=mi).fillna(0) 
Out[14]: 
foo one dull  1 
      shiny 1 
    two dull  1 
      shiny 2 
bar one dull  1 
      shiny 0 
    two dull  1 
      shiny 0 
dtype: float64 
+0

मुझे लगता है कि क्या शामिल किया जा सकता हो सकता है एक कीवर्ड '' dropna = False'' (जो आम तौर सही पर चूक) एक मील के लिए सभी संयोजनों शामिल करने के लिए (जो आप यहाँ क्या) .... यह है एक नई सुविधा हम 0.11.1 में पेश कर रहे हैं के समान है: जो इस एक ही संपत्ति ... – Jeff

+0

tHX है http://pandas.pydata.org/pandas-docs/dev/groupby.html#filtration, यह होगा महान! मेरा पहला सवाल क्रॉसस्टैब फ़ंक्शन के बारे में था - इसलिए आपने इसका उत्तर भी दिया http://stackoverflow.com/questions/17003034/missing-data-in-pandas-crosstab। – norecces

+0

कि था @Andy हेडन .... लेकिन एनपी – Jeff

संबंधित मुद्दे