如何获得 Pandas 中排名前 5 的密集行?

How to get top 5 dense ranked rows in Pandas?

所以我试着让它工作。我知道如何排序,使用 nlargest 或使用 rank with method dense..但不知何故我还是迷路了。

这是我想要实现的目标:

假设我有这个数据

我想select top3 rows based on the lowest score 我想得到这个

正如我所说,我想要前3行,但如果有相同的分数,应该得到4个或更多。

我在尝试的所有组合中都迷失了一点。有没有简单的方法可以做到这一点?

您可以创建一个包含 Score 列中 3 个最小值的数组,然后使用 isin 过滤您的数据框:

some_vals = pd.Series(df['Score'].unique()).nsmallest(3).values
df[df['Score'].isin(some_vals)]

   Name  Score
0   John      1
1   Mark      2
2  Perry      2
3   Dion      3

通过这种方式,您可以确保返回所有 Score 中的值等于 3 个最小值中的任何一个的名称。