मैं विशिष्ट कॉलम में मान के अनुसार पांडा डेटा फ़ाइल में स्ट्रिंग्स को कैसे सॉर्ट कर सकता हूं? [डुप्लिकेट]
मेरा पायथन कार्यक्रम पंडों प्रारूप में एक डेटा फ़ाइल उत्पन्न करता है
Source LogP MolWt HBA HBD
0 cne_1 1.1732 263.405 3 1
1 cne_10 2.6639 197.237 2 0
2 cne_100 -0.2886 170.193 4 2
3 cne_1000 1.9644 304.709 5 1
4 cne_1001 1.4986 162.144 3 1
... ... ... ... ... ...
1031 cne_995 3.0179 347.219 4 2
1032 cne_996 4.8419 407.495 6 2
1033 cne_997 3.3560 354.524 3 1
1034 cne_998 7.5465 635.316 4 2
1035 cne_999 3.3514 389.556 4 1
मुझे संख्या के अनुसार दूसरे (स्रोत) कॉलम के आधार पर तार को क्रमबद्ध करने की आवश्यकता है, इसलिए छँटाई के बाद लाइनों का सही क्रम होना चाहिए: cne_1, cne_2, cne_3, cne_4 et मैंने उपयोग करने की कोशिश की है:
df_sorted = df.sort_values('Source', ascending=True)
लेकिन इसने लाइनों के क्रम में कोई परिवर्तन नहीं किया।
जवाब
अंतिम पांडा संस्करणों के लिए संभव है कि पूर्णांक मानों को key
विभाजित करके _
और मानों को पूर्णांकों में परिवर्तित करके पैरामीटर का उपयोग करें :
df_sorted = df.sort_values('Source', key=lambda x: x.str.split('_').str[1].astype(int))
या संभव है कि इसके द्वारा सॉर्ट किए गए मानों की स्थिति प्राप्त Series.argsortकरें DataFrame.iloc:
df_sorted = df.iloc[df['Source'].str.split('_').str[1].astype(int).argsort()]
print (df_sorted)
Source LogP MolWt HBA HBD
0 cne_1 1.1732 263.405 3 1
1 cne_10 2.6639 197.237 2 0
2 cne_100 -0.2886 170.193 4 2
1031 cne_995 3.0179 347.219 4 2
1032 cne_996 4.8419 407.495 6 2
1033 cne_997 3.3560 354.524 3 1
1034 cne_998 7.5465 635.316 4 2
1035 cne_999 3.3514 389.556 4 1
3 cne_1000 1.9644 304.709 5 1
4 cne_1001 1.4986 162.144 3 1
स्तंभ में पूर्णांक मान प्राप्त करें और फिर उसका उपयोग करके सॉर्ट करें।
df['sortIndex'] = df.Source.str.replace('cne_', '', regex=False).astype(int)
df_sorted = df.sort_values('sortIndex', ascending=True)
अंकों को निकालें, तदनुसार अंतर और क्रमबद्ध करें। ( .sort_values(0)
क्योंकि अनाम स्तंभ अपने आप नाम हो 0
जाता है)
df_sorted = df.loc[df["Source"].str.extract(r"_(\d+)").astype(int).sort_values(0).index]
परिणाम
print(df_sorted)
Source LogP MolWt HBA HBD
0 cne_1 1.1732 263.405 3 1
1 cne_10 2.6639 197.237 2 0
2 cne_100 -0.2886 170.193 4 2
1031 cne_995 3.0179 347.219 4 2
1032 cne_996 4.8419 407.495 6 2
1033 cne_997 3.3560 354.524 3 1
1034 cne_998 7.5465 635.316 4 2
1035 cne_999 3.3514 389.556 4 1
3 cne_1000 1.9644 304.709 5 1
4 cne_1001 1.4986 162.144 3 1