क्या विभिन्न स्तंभों के संयोजन से डेटाफ़्रेम को सॉर्ट करने का कोई तरीका है? जैसे कि यदि विशिष्ट कॉलम पंक्तियों के बीच मेल खाते हैं, तो उन्हें एक साथ क्लस्टर किया जाएगा? नीचे एक उदाहरण: किसी भी मदद की बहुत सराहना की जाती है!

मूल डेटाफ़्रेम

रूपांतरित डेटाफ़्रेम

-1
ryan daher 18 मार्च 2020, 08:15

2 जवाब

पांडा डेटाफ़्रेम को सॉर्ट करने का एक तरीका .sort_values() का उपयोग करना है।

नीचे दिया गया कोड आपके नमूना डेटाफ़्रेम को दोहराता है:

df= pd.DataFrame({'v1': [1, 3, 2, 1, 4, 3],
                  'v2': [2, 2, 4, 2, 3, 2],
                  'v3': [3, 3, 2, 3, 2, 3],
                  'v4': [4, 5, 1, 4, 2, 5]})

नीचे दिए गए कोड का उपयोग करके, डेटाफ्रेम को कॉलम v1 और v2 दोनों द्वारा सॉर्ट किया जा सकता है। इस मामले में, v2 का उपयोग केवल संबंध तोड़ने के लिए किया जाता है।

df.sort_values(by=['v1', 'v2'], ascending=True) 

यहां "द्वारा" पैरामीटर किसी भी संख्या में चर तक सीमित नहीं है, इसलिए वांछित क्रम में अधिक चर शामिल करने के लिए सूची का विस्तार कर सकता है।

2
Zolzaya Luvsandorj 18 मार्च 2020, 09:28

छवि में दिखाए गए अपने सॉर्ट पैटर्न से मेल खाने के लिए यह सबसे अच्छा है।

import pandas as pd

df = pd.DataFrame(dict(
    v1=[1,3,2,1,4,3],
    v2=[2,2,4,2,3,2],
    v3=[3,3,2,3,2,3],
    v4=[4,5,1,4,2,5],
))

# Make a temp column to sort the df by
df['sort'] = df.astype(str).values.sum(axis=1)
# Sort the df by that column, drop it and reset the index
df = df.sort_values(by='sort').drop(columns='sort').reset_index(drop=1)

print(df)

लिंक जिसे आप रेफर कर सकते हैं - पायथन ट्यूटर में कोड

संपादित करें: Zolzaya Luvsandorj की सिफारिश बेहतर है:

import pandas as pd

df = pd.DataFrame(dict(
    v1=[1,3,2,1,4,3],
    v2=[2,2,4,2,3,2],
    v3=[3,3,2,3,2,3],
    v4=[4,5,1,4,2,5],
))

df = df.sort_values(by=list(df.columns)).reset_index(drop=1)

print(df)

लिंक जिसे आप रेफर कर सकते हैं - पायथन ट्यूटर में बेहतर कोड

1
Community 20 जून 2020, 12:12