过滤每人2个最高的唯一值

我被困在我的项目中的数据整理步骤,我想知道是否有人能够帮助我。

我拥有的数据框的一部分是这样的:

GPI
1 12 10
1 12 12
1 11 18
1 10 20
2 10 12
2 8 14
2 9 16

回答

groupbyrank

我们可以尝试groupbyrank选择对应于每最大2个月值的行Person

df[df.groupby('Person')['month'].rank('dense', False) <= 2]

   Person  month  GPI
0       1     12   10
1       1     12   12
2       1     11   18
4       2     10   12
6       2      9   16


以上是过滤每人2个最高的唯一值的全部内容。
THE END
分享
二维码
< <上一篇
下一篇>>