对Pandas进行分组聚合和排序的更好方法

2024-09-26 17:49:49 发布

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

我在用婴儿的名字数据源。数据是这样的

name   sex births year
Mary    F  7065   1880
Anna    F  2604   1880
Emma    F  2003   1880
...
Zariyan M   5     2016
Zarren  M   5     2016
Zaryn   M   5     2016

其目标是筛选出并获得2011年及以后的年度。然后,聚合重复项,按性别分组,按降序排序。输出就是这个。

^{pr2}$

我设法做到了,但我的代码确实效率低下,而且很枯燥。应该有更好的办法来做,但我不知道怎么做。这是我的密码。

^{pr3}$

Tags: 数据name目标名字year数据源婴儿mary
1条回答
网友
1楼 · 发布于 2024-09-26 17:49:49

你分类太多了。此外,groupby还执行排序,使之前的排序无效。我是这样做的-

df = df.query("year >= 2011")\                   
       .groupby(['name', 'sex'], sort=False, as_index=False))\    
       .births.sum()\                              
       .sort_values(['sex', 'births'], ascending=[True, False])
       .groupby('sex', sort=False)\
       .head(5)\
  1. query过滤year
  2. groupby将按name和{}分组,并阻止结果排序
  3. sum将按组对birth求和
  4. sort_values将按sex的升序和出生的降序对结果进行排序。在
  5. 另一个groupby+head调用通过sex检索前5行(可选)

相关问题 更多 >

    热门问题