2016-06-27 16 views
6

में आंतरिक मल्टीइंडेक्स स्तर के अंतिम तत्वों तक पहुंचें multi index पांडा डेटाफ्रेम में मैं पहले सूचकांक के सभी मानों के लिए अंतिम अंतिम अनुक्रमणिका का उपयोग करना चाहता हूं। दूसरी अनुक्रमणिका में स्तरों की संख्या पहले सूचकांक के मूल्य के आधार पर भिन्न होती है। मैं pandas multi index documentation के माध्यम से गया लेकिन ऐसा कुछ भी नहीं मिला जो ऐसा करता है।पांडा डेटाफ्रेम

उदाहरण के लिए, नीचे दिए गए डेटा फ्रेम के लिए:

arrays = [ ['bar', 'bar', 'baz', 'foo', 'foo', 'foo', 'qux'], 
      ['one', 'two', 'one', 'one', 'two', 'three', 'one']] 
tuples = list(zip(*arrays)) 
index = pd.MultiIndex.from_tuples(tuples, names=['first', 'second']) 
df = pd.DataFrame(np.random.randn(7, 3), index=index, columns=['A', 'B', 'C']) 
df 
       A   B   C 
first second 
bar one  0.289163 -0.464633 -0.060487 
     two  0.224442 0.177609 2.156436 
baz one -0.262329 -0.248384 0.925580 
foo one  0.051350 0.452014 0.206809 
     two  2.757255 -0.739196 0.183735 
     three -0.064909 -0.963130 1.364771 
qux one -1.330857 1.881588 -0.262170 

मैं प्राप्त करना चाहते हैं:

    A   B   C 
first second 
bar two  0.224442 0.177609 2.156436 
baz one -0.262329 -0.248384 0.925580 
foo three -0.064909 -0.963130 1.364771 
qux one -1.330857 1.881588 -0.262170 

dataframes मैं के साथ काम कर रहा हूँ 10M से अधिक लाइनों है तो मैं स्पष्ट पाशन बचना चाहते हैं।

+0

आप 'df.groupby कर सकता है (स्तर = 'पहली') पिछले()' – EdChum

उत्तर

6

उपयोग groupbytail साथ:

print (df.groupby(level='first').tail(1)) 
        A   B   C 
first second        
bar two  0.053054 -0.555819 0.589998 
baz one -0.868676 1.293633 1.339474 
foo three 0.407454 0.738872 1.811894 
qux one -0.346014 -1.491270 0.446772 

क्योंकि lastlevel second खो दिया:।

print (df.groupby(level='first').last())   
       A   B   C 
first        
bar 0.053054 -0.555819 0.589998 
baz -0.868676 1.293633 1.339474 
foo 0.407454 0.738872 1.811894 
qux -0.346014 -1.491270 0.446772 
संबंधित मुद्दे