首页 > 后端开发 > Python教程 > 如何高效获取每个Pandas Group内的前N条记录?

如何高效获取每个Pandas Group内的前N条记录?

Patricia Arquette
发布: 2024-12-02 19:27:14
原创
1009 人浏览过

How to Efficiently Get the Top N Records within Each Pandas Group?

获取 Pandas 组内的最高记录

在以下数据集中:

df = pd.DataFrame({'id':[1,1,1,2,2,2,2,3,4], 'value':[1,2,3,1,2,3,4,1,1]})
登录后复制

我们希望获得每个 id 的前两条记录。一种简单的方法是使用 groupby 方法在每个组内分配行号:

dfN = df.groupby('id').apply(lambda x:x['value'].reset_index()).reset_index()
登录后复制

但是,head 函数提供了更有效的解决方案:

df.groupby('id').head(2)
登录后复制

此操作会产生:

       id  value
id             
1  0   1      1
   1   1      2 
2  3   2      1
   4   2      2
3  7   3      1
4  8   4      1
登录后复制

要删除 MultiIndex 并展平结果,使用:

df.groupby('id').head(2).reset_index(drop=True)
登录后复制

这会产生所需的输出:

    id  value
0   1      1
1   1      2
2   2      1
3   2      2
4   3      1
5   4      1
登录后复制

因此,head 函数提供了一种简洁且优化的方法来检索每个 Pandas 组中最上面的记录。

以上是如何高效获取每个Pandas Group内的前N条记录?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板