Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/19.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何从数据帧Python-3中找到前N个最小值_Python_Python 3.x_Pandas_Dataframe_Pandas Groupby - Fatal编程技术网

如何从数据帧Python-3中找到前N个最小值

如何从数据帧Python-3中找到前N个最小值,python,python-3.x,pandas,dataframe,pandas-groupby,Python,Python 3.x,Pandas,Dataframe,Pandas Groupby,我在数据框下方有“年龄”字段,需要从数据框中找出前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岁,如何实现这一目标 注意:数据帧-DF包含年龄重复项,即18和23重复两次,需要唯一值

我在数据框下方有“年龄”字段,需要从数据框中找出前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岁,如何实现这一目标

注意:数据帧-DF包含年龄重复项,即18和23重复两次,需要唯一值。

您可以使用:

或者,如果您只需要
Age
列的值:

>>> df['Age'].nsmallest(2)
0    18
4    23
Name: Age, dtype: int64
也可以将其包装在列表中:

>>> df['Age'].nsmallest(2).to_list()
[18, 23]
通过首先构造具有唯一值的
系列
,可以获得n个最小的唯一值:

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

正确的做法是使用
nsmalest
,这里我展示另一种方法:+


已更新

如果存在重复项,我们可以使用以前的:

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


@间谍:你可以使用
df['Age']
>>> 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
df['Age'].sort_values().head(2).tolist()
#[18, 23]
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]