पंडों में मल्टी इंडेक्स सॉर्टिंग


88

मेरे पास पंडों के df में बहु-सूचकांक कॉलम के साथ एक डेटासेट है जिसे मैं एक विशिष्ट कॉलम में मानों के आधार पर क्रमबद्ध करना चाहूंगा। मैंने Sortindex और Sortlevel का उपयोग करने की कोशिश की है, लेकिन उन परिणामों को प्राप्त करने में सक्षम नहीं है जो मैं देख रहा हूं। मेरा डेटासेट ऐसा दिखता है:

    Group1    Group2
    A B C     A B C
1   1 0 3     2 5 7
2   5 6 9     1 0 0
3   7 0 2     0 3 5 

मैं समूह 1 में कॉलम सी द्वारा सभी डेटा और इंडेक्स को क्रमबद्ध करना चाहता हूं ताकि मेरे परिणाम इस तरह दिखें:

    Group1    Group2
    A B C     A B C
 2  5 6 9     1 0 0
 1  1 0 3     2 5 7
 3  7 0 2     0 3 5 

क्या इस तरह की संरचना उस डेटा के साथ करना संभव है जो मेरे डेटा में है, या मुझे ग्रुप 1 को इंडेक्स साइड में स्वैप करना चाहिए?

जवाबों:


129

जब एक MultiIndex द्वारा सॉर्ट किया जाता है तो आपको एक सूची के अंदर कॉलम का वर्णन करने वाले टपल को शामिल करने की आवश्यकता होती है *:

In [11]: df.sort_values([('Group1', 'C')], ascending=False)
Out[11]: 
  Group1       Group2      
       A  B  C      A  B  C
2      5  6  9      1  0  0
1      1  0  3      2  5  7
3      7  0  2      0  3  5

* इसलिए पांडा को भ्रमित न करने के लिए सोचें कि आप समूह 1 द्वारा पहले छांटना चाहते हैं फिर सी से।


नोट: मूल रूप .sortसे पदावनत के बाद से उपयोग किया जाता है , तो 0.20 में हटा दिया जाता है, के पक्ष में .sort_values


धन्यवाद, वास्तव में मैं क्या देख रहा था।
MattB

Hmmph। मुझसे तेज़ और बूट के लिए एक बेहतर समाधान।
DSM

2
वास्तव में मुझे क्या चाहिए, धन्यवाद। डॉक्स से यह स्पष्ट नहीं था (कम से कम मुझे यह नहीं मिला)। इसके अलावा, केवल शीर्ष स्तर को परिभाषित करने पर त्रुटि संदेश भ्रामक है Cannot sort by duplicate column X:।
डॉ। जन-फिलिप गेर्के

हमें सूची का उपयोग क्यों करना चाहिए, इसके लिए स्पष्टीकरण जोड़ने के लिए अतिरिक्त आभार। काश, पंडों की सूची बनाम टपल का पता लगाते और एक स्तंभ के रूप में एक टपल की व्याख्या करते और स्तंभों की सूची नहीं ...
कौशिक घोष

5
@KaushikGhose जो लगता है कि एक अच्छी सुविधा का अनुरोध हो सकता है , मुझे लगता है कि आप लोक का उपयोग कर सकते हैं:df.loc[('Group1', 'C')]
एंडी हेडन
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.