पांडस 0.17 में पदानुक्रम सूचकांक (ए और बी) को बनाए रखते हुए मैं एक विशिष्ट कॉलम द्वारा सॉर्ट करने का प्रयास करता हूं। बी एक चलती संख्या है जो concatenation के माध्यम से डेटा फ्रेम स्थापित करते समय बनाया गया है। मेरे डेटा इस तरह दिखता है:पाइंडन पांडस मल्टीइंडेक्स और कॉलम द्वारा क्रमबद्ध
C D
A B
bar two dull 5
three glossy 8
one shiny 10
foo one dull 3
three matt 12
two shiny 9
नीचे कोड मैं उपयोग कर रहा हूँ और परिणाम है:
C D
A B
bar one shiny 10
two dull 5
three glossy 8
foo one dull 3
two shiny 9
three matt 12
यह मैं क्या जरूरत है। नोट: पांडस 0.17 अलर्ट्स कि dataframe.sort को बहिष्कृत किया जाएगा। इसी तरह
df.sort_values(by="C", ascending=True).groupby(axis=0, level=0, as_index=True)
, पहले सूचकांक छँटाई का उपयोग करने जा, और फिर GroupBy स्तंभ नहीं उपयोगी है:
df.sort_values(by="C", ascending=True)
C D
A B
bar two dull 5
foo one dull 3
bar three glossy 8
foo three matt 12
bar one shiny 10
foo two shiny 9
जोड़ना .groupby एक ही परिणाम का उत्पादन नहीं
df.sort_index(axis=0, level=0, as_index=True).groupby(C, as_index=True)
मैं कर रहा हूँ कुछ रीइंडेक्सिंग के बारे में मुझे पहली इंडेक्स ए रखने की जरूरत है, दूसरी इंडेक्स बी को फिर से सौंप दिया जा सकता है, लेकिन इसे नहीं करना है। अगर कोई आसान समाधान नहीं है तो यह मुझे आश्चर्यचकित करेगा; मुझे लगता है मुझे बस यह नहीं मिला। किसी भी सुझाव की सराहना की जाती है।
संपादित करें: इस बीच मैं दूसरा सूचकांक बी गिरा में, पुन: असाइन पहले सूचकांक एक एक स्तंभ के बजाय एक सूचकांक एकाधिक स्तंभों हल कर सकता है, तो फिर से इंडैक्स:
df.index = df.index.droplevel(1)
df.reset_index(level=0, inplace=True)
df_sorted = df.sort_values(["A", "C"], ascending=[1,1]) #A is a column here, not an index.
df_reindexed = df_sorted.set_index("A")
बहुत
फिर भी वर्बोज़।
आपका दृष्टिकोण मेरे मध्यवर्ती समाधान से अधिक उन्नत है, लेकिन मैं मानता हूं कि एक बेहतर तरीका होना चाहिए। – raummensch