按两列的值分组并在Pandas中筛选

2024-05-08 03:47:20 发布

您现在位置:Python中文网/ 问答频道 /正文

我有这样一个数据帧:

    name    sex births  year
0   Mary    F   7433    2000
1   John    M   6542    2000
2   Emma    F   2342    2000
3   Ron     M   5432    2001
4   Bessie  F   4234    2001
5   Jennie  F   2413    2002
6   Nick    M   2343    2002
7   Ron     M   4342    2002

我需要获取新的数据帧,其中数据将按年份和性别分组,最后两列将是名称,其中包含最大出生数和最大(出生)值,如下所示:

^{pr2}$

Tags: 数据name名称johnyearnick年份性别
1条回答
网友
1楼 · 发布于 2024-05-08 03:47:20

可以使用以下groupby操作来完成:

>>> df.groupby(['year', 'sex'], as_index=False).max()
   year sex    name  births
0  2000   F    Mary    7433
1  2000   M    John    6542
2  2001   F  Bessie    4234
3  2001   M     Ron    5432
4  2002   F  Jennie    2413
5  2002   M     Ron    4342

as_index=False阻止groupby键成为返回数据帧中的索引。在

或者,要获得所需的输出,您可能需要对“出生”列进行排序,然后使用groupby.first()

^{pr2}$

相关问题 更多 >