私はフィールド「年齢」のデータフレームの下にいます、データフレームからトップ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()
上位2歳、つまりリストの18、23が欲しい、これを達成する方法は?
注:DataFrame-DF重複する年齢が含まれています。つまり、18と23が2回繰り返され、一意の値が必要です。
nsmallest(..)
[pandas-doc] を使用できます。
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最小unique値を取得するには、最初に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
正しいのはnsmallest
を使用することです。ここでは別の方法を示します: DataFrame.sort_values
+ DataFrame.head
df['Age'].sort_values().head(2).tolist()
#[18, 23]
[〜#〜]更新[〜#〜]
duplicatesがある場合、 Series.drop_duplicates
以前:
df['Age'].drop_duplicates().nsmallest(2).tolist()
#df['Age'].drop_duplicates().sort_values().head(2).tolist()
#[18, 23]
[*np.sort(df['Age'].unique())[:2]]
#[18, 23]