पांडा: स्ट्रिंग कॉलम के आधार पर डेटाफ़्रेम को कैसे क्रमबद्ध करें
आप किसी विशेष स्ट्रिंग कॉलम के मानों के आधार पर पांडा डेटाफ़्रेम की पंक्तियों को क्रमबद्ध करने के लिए निम्न विधियों का उपयोग कर सकते हैं:
विधि 1: स्ट्रिंग कॉलम के अनुसार क्रमबद्ध करें (जब कॉलम में केवल अक्षर हों)
df = df. sort_values (' my_string_column ')
विधि 2: स्ट्रिंग कॉलम के अनुसार क्रमबद्ध करें (जब कॉलम में वर्ण और संख्याएँ हों)
#create 'sort' column that contains digits from 'my_string_column' df[' sort '] = df[' my_string_column ']. str . extract (' (\d+) ', expand= False ). astype (int) #sort rows based on digits in 'sort' column df = df. sort_values (' sort ')
निम्नलिखित उदाहरण दिखाते हैं कि व्यवहार में प्रत्येक विधि का उपयोग कैसे करें।
उदाहरण 1: स्ट्रिंग कॉलम के अनुसार क्रमबद्ध करें (जब कॉलम में केवल अक्षर हों)
मान लीजिए कि हमारे पास निम्नलिखित पांडा डेटाफ़्रेम है जिसमें किराने की दुकान पर विभिन्न उत्पादों की बिक्री के बारे में जानकारी है:
import pandas as pd #createDataFrame df = pd. DataFrame ({' product ': ['Apples', 'Oranges', 'Bananas', 'Lettuce', 'Beans'], ' sales ': [18, 22, 19, 14, 29]}) #view DataFrame print (df) product sales 0 Apples 18 1 Oranges 22 2 Bananas 19 3 Lettuce 14 4 Beans 29
हम उत्पाद कॉलम में स्ट्रिंग्स के आधार पर डेटाफ़्रेम की पंक्तियों को क्रमबद्ध करने के लिए निम्नलिखित सिंटैक्स का उपयोग कर सकते हैं:
#sort rows from A to Z based on string in 'product' column
df = df. sort_values (' product ')
#view updated DataFrame
print (df)
product sales
0 Apples 18
2 Bananas 19
4 Beans 29
3 Lettuce 14
1 Oranges 22
ध्यान दें कि पंक्तियों को अब उत्पाद कॉलम में स्ट्रिंग्स के आधार पर A से Z तक क्रमबद्ध किया गया है।
यदि आप इसके बजाय Z से A तक क्रमबद्ध करना चाहते हैं, तो बस आरोही=गलत तर्क जोड़ें:
#sort rows from Z to A based on string in 'product' column
df = df. sort_values (' product ', ascending= False )
#view updated DataFrame
print (df)
product sales
1 Oranges 22
3 Lettuce 14
4 Beans 29
2 Bananas 19
0 Apples 18
ध्यान दें कि पंक्तियाँ अब उत्पाद कॉलम में स्ट्रिंग्स के आधार पर Z से A तक क्रमबद्ध हैं।
उदाहरण 2: स्ट्रिंग कॉलम के अनुसार क्रमबद्ध करें (जब कॉलम में वर्ण और संख्याएँ हों)
मान लीजिए कि हमारे पास निम्नलिखित पांडा डेटाफ़्रेम है जिसमें किराने की दुकान पर विभिन्न उत्पादों की बिक्री के बारे में जानकारी है:
import pandas as pd #createDataFrame df = pd. DataFrame ({' product ': ['A3', 'A5', 'A22', 'A50', 'A2', 'A7', 'A9', 'A13'], ' sales ': [18, 22, 19, 14, 14, 11, 20, 28]}) #view DataFrame print (df) product sales 0 A3 18 1 A5 22 2 A22 19 3 A50 14 4 A2 14 5 A7 11 6 A9 20 7 A13 28
ध्यान दें कि उत्पाद कॉलम में स्ट्रिंग्स में अक्षर और संख्याएँ दोनों शामिल हैं।
यदि हम उत्पाद कॉलम में मानों का उपयोग करके डेटाफ़्रेम की पंक्तियों को क्रमबद्ध करने का प्रयास करते हैं, तो स्ट्रिंग्स को संख्याओं के आधार पर सही क्रम में क्रमबद्ध नहीं किया जाएगा:
import pandas as pd #sort rows based on strings in 'product' column df = df. sort_values (' product ') #view updated DataFrame print (df) product sales 7 A13 28 4 A2 14 2 A22 19 0 A3 18 1 A5 22 3 A50 14 5 A7 11 6 A9 20
इसके बजाय, हमें सॉर्ट नामक एक नया अस्थायी कॉलम बनाने की आवश्यकता है जिसमें केवल उत्पाद कॉलम से संख्याएं हों, फिर सॉर्ट कॉलम में मानों के आधार पर सॉर्ट करें, फिर कॉलम को पूरी तरह से हटा दें:
import pandas as pd #create new 'sort' column that contains digits from 'product' column df[' sort '] = df[' product ']. str . extract (' (\d+) ', expand= False ). astype (int) #sort rows based on digits in 'sort' column df = df. sort_values (' sort ') #drop 'sort' column df = df. drop (' sort ', axis= 1 ) #view updated DataFrame print (df) product sales 4 A2 14 0 A3 18 1 A5 22 5 A7 11 6 A9 20 7 A13 28 2 A22 19 3 A50 14
ध्यान दें कि पंक्तियाँ अब उत्पाद कॉलम में स्ट्रिंग्स द्वारा क्रमबद्ध हैं और संख्याएँ सही क्रम में क्रमबद्ध हैं।
नोट : आप पांडा सॉर्ट_वैल्यूज़() फ़ंक्शन का पूरा दस्तावेज़ यहां पा सकते हैं।
अतिरिक्त संसाधन
निम्नलिखित ट्यूटोरियल बताते हैं कि पांडा में अन्य सामान्य कार्य कैसे करें:
पांडा: तिथि के अनुसार कैसे क्रमबद्ध करें
पांडा: कॉलम को नाम के आधार पर कैसे क्रमबद्ध करें
पांडा: सूचकांक और स्तंभ दोनों के आधार पर कैसे क्रमबद्ध करें