我在数据框下方有字段“年龄”,需要从数据框中找到前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重复两次,需要唯一值。

最佳答案

您可以使用 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]

您可以通过首先构造具有唯一值的Series来获得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

关于python - 如何从Python-3的DataFrame中查找前N个最小值,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/59477797/

10-09 07:53