डेटाफ़्रेम, पायथन -3 से शीर्ष एन न्यूनतम मान कैसे खोजें


9

मेरे पास फ़ील्ड 'एज' के साथ डेटाफ़्रेम है, डेटाफ़्रेम से शीर्ष 3 न्यूनतम आयु की आवश्यकता है

DF = pd.DataFrame.from_dict({'Name':['A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J'], 'Age':[18, 45, 35, 70, 23, 24, 50, 65, 18, 23]})

DF['Age'].min()  

सूची में शीर्ष दो आयु अर्थात 18, 23 चाहते हैं, इसे कैसे प्राप्त करें?

नोट: DataFrame - DF में आयु डुप्लिकेट शामिल हैं यानी 18 और 23 दो बार दोहराए जाते हैं, अद्वितीय मानों की आवश्यकता होती है।

जवाबों:


14

आप nsmallest(..)[पंडों-डॉक्टर] का उपयोग कर सकते हैं :

df.nsmallest(2, 'Age')

दिए गए नमूना डेटा के लिए, यह हमें देता है:

>>> df.nsmallest(2, 'Age')
  Name  Age
0    A   18
4    E   23

या यदि आपको केवल Ageकॉलम के मूल्य की आवश्यकता है :

>>> df['Age'].nsmallest(2)
0    18
4    23
Name: Age, dtype: int64

या आप इसे सूची में लपेट सकते हैं:

>>> df['Age'].nsmallest(2).to_list()
[18, 23]

आप प्राप्त कर सकते हैं n छोटी से छोटी अद्वितीय मूल्यों, पहले एक का निर्माण करके Seriesअनन्य मानों के साथ:

>>> pd.Series(df['Age'].unique()).nsmallest(2)
0    18
4    23
dtype: int64
>>> df['Age'].drop_duplicates().nsmallest(2)
0    18
4    23
Name: Age, dtype: int64

2
@SPy: आप के df['Age'].nsmallest(2)रूप में अच्छी तरह से उपयोग कर सकते हैं :)
विलेम वैन Onsem

3

सही बात यह है कि उपयोग करने के लिए nsmallest, यहां मैं एक और तरीका दिखाता हूं: DataFrame.sort_values+DataFrame.head

df['Age'].sort_values().head(2).tolist()
#[18, 23]

UPDATED

यदि डुप्लिकेट हैं , तो हम Series.drop_duplicatesपहले उपयोग कर सकते हैं :

df['Age'].drop_duplicates().nsmallest(2).tolist()
#df['Age'].drop_duplicates().sort_values().head(2).tolist()
#[18, 23]

या np.sort+np.unique

[*np.sort(df['Age'].unique())[:2]]
#[18, 23]
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.