gpt4 book ai didi

Python:过滤 Pandas 数据框以根据列保留指定的行数

转载 作者:太空宇宙 更新时间:2023-11-03 14:01:39 24 4
gpt4 key购买 nike

我有一个 pandas 数据框,它看起来像:

id    name    grade
1 A 10
1 A 12
1 A 15
2 B 20
3 C 19
3 C 16
3 C 11

并且需要让它看起来像:

id    name    grade
1 A 12
1 A 15
2 B 20
3 C 19
3 C 16

在这种情况下,我需要为每个具有最高等级的 id 保留前 2 行。我知道我可以使用 iloc 并遍历数据框,但我想知道是否有更多的 pythonic 方法来执行此操作。这可能吗?提前致谢

顺便说一句,如果您有任何想法,请随时编辑问题并给它一个更好的标题。

UPDATE1 我接受了@willem-van-onsem 的回答,因为它是第一个发布的并且对我来说工作正常。另一个答案也很有效。我不确定每个答案的表现,所以如果出于任何原因您认为另一个答案可能更合适,请在此处发表评论,以便我为其他人更新答案和帖子。

UPDATE2 已接受的答案在大型数据帧上效果更好,这就是为什么我要坚持使用它作为答案。

最佳答案

使用n最大

df.loc[df.groupby('id').grade.nlargest(2).index.get_level_values(1)].sort_index()

id name grade
1 1 A 12
2 1 A 15
3 2 B 20
4 3 C 19
5 3 C 16

关于Python:过滤 Pandas 数据框以根据列保留指定的行数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48570891/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com