首页 >后端开发 >Python教程 >如何高效地获取 Pandas DataFrame 中每组的前几条记录?

如何高效地获取 Pandas DataFrame 中每组的前几条记录?

Barbara Streisand
Barbara Streisand原创
2024-11-25 18:03:10738浏览

How Can I Efficiently Get the Top Records from Each Group in a Pandas DataFrame?

Pandas:高效获取组内最靠前的记录

使用 Pandas DataFrame 时,经常需要从每个组中提取前导记录。常见的方法是利用 'groupby' 和 'apply' 函数来枚举每个组内的记录。

dfN = df.groupby('id').apply(lambda x:x['value'].reset_index()).reset_index()

但是,存在一种更简化的方法:

df.groupby('id').head(2)

这方法直接获取最上面的记录,无需中间计算。此外,生成的 DataFrame 保留其原始索引。

要展平生成的 MultiIndex,请使用:

df.groupby('id').head(2).reset_index(drop=True)

这将生成以下 DataFrame:

id value
1 1
1 2
2 1
2 2
3 1
4 1

或者,您可以使用 SQL 的“row_number()”窗口函数来高效地枚举组内的记录。然而,此功能目前在 Pandas 中不可用。

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

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn