首页 > 解决方案 > 如何在 Pandas DataFrame 中只保留最小值

问题描述

祝大家有美好的一天!我需要你的帮助。

我有一个像这样的数据框:

df.sort_values('date')

        name        date    mark
0      Jack       2019-03    4
1      Michael    2019-03    6
2      John       2019-03    9
3      Michael    2019-03    2
4      Jerry      2019-03    4
5      Jack       2019-03    5
6      John       2019-03    3
7      Jerry      2019-03    4
...
857    Jerry      2019-08    5
858    John       2019-08    7
859    Jack       2019-08    4
860    Michael    2019-08    6
860    Michael    2019-08    7

我只想为每个人留下最低分数。

例如:如果 Jack多次获得最低成绩“ 4 ”,我需要删除 Jack 获得其他成绩的其他行,并保留他获得“ 4 ”的行。同样的逻辑也应该适用于其他人。这是我想要的 DataFrame 的示例:

df.sort_values('date')

        name        date    mark
0      Jack       2019-03    4
3      Michael    2019-03    6
4      Jerry      2019-03    4
6      John       2019-03    3
7      Jerry      2019-03    4
...
859    Jack       2019-08    4
860    Michael    2019-08    6

你能告诉我我应该如何处理这个问题吗?

标签: pythonpandasdataframe

解决方案


df.groupby('name').apply(lambda x: x[x['mark'] == x['mark'].min()])

您可以按名称分组,并对每个组应用过滤器以匹配最少的组。


推荐阅读