DataFrame, Python-3'ten en yüksek N minimum değeri nasıl bulunur?


9

Alan 'Yaş' ile Dataframe altında var, DataFrame en az 3 yaş bulmak gerekir

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()  

İlk iki Yaş yani 18, 23 Listesinde, Bunu nasıl başarabilirim?

Not: DataFrame - DF Yaş Kopyalarını İçerir, yani iki kez tekrarlanan 18 ve 23, benzersiz değerlere ihtiyaç duyar.

Yanıtlar:


14

nsmallest(..)[Panda-doc] 'den faydalanabilirsiniz :

df.nsmallest(2, 'Age')

Verilen örnek veriler için bu bize şunları sağlar:

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

Veya yalnızca Agesütunun değerine ihtiyacınız varsa :

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

veya bir listeye koyabilirsiniz:

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

Sen alabilirsiniz n en küçük eşsiz öncelikle oluşturarak, değerlerini Serieseşsiz değerlere sahip:

>>> 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: Siz de kullanabilirsiniz df['Age'].nsmallest(2):)
Willem Van Onsem

3

Doğru olanı kullanmak nsmallest, burada başka bir yol göstereceğim: DataFrame.sort_values+DataFrame.head

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

GÜNCELLENMİŞ

Varsa çiftleri , biz kullanabiliriz Series.drop_duplicatesönce:

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

veya np.sort+np.unique

[*np.sort(df['Age'].unique())[:2]]
#[18, 23]
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.