'DataFrame' ऑब्जेक्ट में कोई विशेषता 'सॉर्ट' नहीं है


103

मुझे यहां कुछ समस्या का सामना करना पड़ रहा है, मेरे अजगर पैकेज में मैंने सुन्न स्थापित किया है, लेकिन मेरे पास अभी भी यह त्रुटि है 'DataFrame' ऑब्जेक्ट में कोई विशेषता 'सॉर्ट' नहीं है

कोई भी मुझे कुछ विचार दे सकता है ।।

यह मेरा कोड है:

final.loc[-1] =['', 'P','Actual']
final.index = final.index + 1  # shifting index
final = final.sort()
final.columns=[final.columns,final.iloc[0]]
final = final.iloc[1:].reset_index(drop=True)
final.columns.names = (None, None)

जवाबों:


223

sort() या तो इसके पक्ष में डाटाफ्रेम के लिए पदावनत किया गया था:

  • sort_values()करने के लिए कॉलम के आधार पर प्रकार (ओं)
  • sort_index()के सूचकांक के आधार पर सॉर्ट

sort()पंडों में पदावनत (लेकिन अभी भी उपलब्ध) 0.17 (2015-10-09) की शुरूआत के साथ sort_values()और sort_index()। इसे 0.20 (2017-05-05) रिलीज के साथ पंडों से हटा दिया गया था।


15

पंडों की छँटाई 101

sortv0.20 द्वारा प्रतिस्थापित किया गया है DataFrame.sort_valuesऔर DataFrame.sort_index। इसके अलावा, हमारे पास भी है argsort

यहाँ छँटाई में कुछ सामान्य उपयोग के मामले हैं, और वर्तमान एपीआई में छँटाई कार्यों का उपयोग करके उन्हें कैसे हल किया जाए। सबसे पहले, सेटअप।

# Setup
np.random.seed(0)
df = pd.DataFrame({'A': list('accab'), 'B': np.random.choice(10, 5)})    
df                                                                                                                                        
   A  B
0  a  7
1  c  9
2  c  3
3  a  5
4  b  2

एकल कॉलम द्वारा क्रमबद्ध करें

उदाहरण के लिए, dfकॉलम "A" के आधार पर, sort_valuesएकल कॉलम नाम के साथ उपयोग करें:

df.sort_values(by='A')

   A  B
0  a  7
3  a  5
4  b  2
1  c  9
2  c  3

यदि आपको एक नई रेंजइंडेक्स की आवश्यकता है, तो उपयोग करें DataFrame.reset_index

कई कॉलमों के आधार पर छाँटें

उदाहरण के लिए, दोनों में "A" और "B" क्रमबद्ध करने के लिए, dfआप एक सूची पास कर सकते हैं sort_values:

df.sort_values(by=['A', 'B'])

   A  B
3  a  5
0  a  7
4  b  2
2  c  3
1  c  9

DataFrame Index के आधार पर छाँटें

df2 = df.sample(frac=1)
df2

   A  B
1  c  9
0  a  7
2  c  3
3  a  5
4  b  2

आप इसका उपयोग कर सकते हैं sort_index:

df2.sort_index()

   A  B
0  a  7
1  c  9
2  c  3
3  a  5
4  b  2

df.equals(df2)                                                                                                                            
# False
df.equals(df2.sort_index())                                                                                                               
# True

यहां उनके प्रदर्शन के साथ कुछ तुलनीय तरीके दिए गए हैं:

%timeit df2.sort_index()                                                                                                                  
%timeit df2.iloc[df2.index.argsort()]                                                                                                     
%timeit df2.reindex(np.sort(df2.index))                                                                                                   

605 µs ± 13.6 µs per loop (mean ± std. dev. of 7 runs, 1000 loops each)
610 µs ± 24.2 µs per loop (mean ± std. dev. of 7 runs, 1000 loops each)
581 µs ± 7.63 µs per loop (mean ± std. dev. of 7 runs, 1000 loops each)

सूचियों की सूचियों के आधार पर छाँटें

उदाहरण के लिए,

idx = df2.index.argsort()
idx
# array([0, 7, 2, 3, 9, 4, 5, 6, 8, 1])

यह "सॉर्टिंग" समस्या वास्तव में एक सरल अनुक्रमण समस्या है। बस पूर्णांक लेबल पास करना ilocहोगा।

df.iloc[idx]

   A  B
1  c  9
0  a  7
2  c  3
3  a  5
4  b  2
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.