首页 >后端开发 >Python教程 >如何高效地检索 Pandas DataFrame 中组内的前 N ​​条记录?

如何高效地检索 Pandas DataFrame 中组内的前 N ​​条记录?

Barbara Streisand
Barbara Streisand原创
2024-12-05 13:24:12980浏览

How Can I Efficiently Retrieve the Top N Records Within Groups in a Pandas DataFrame?

Pandas:高效检索组内的最高记录

考虑检索 pandas DataFrame 中特定列的每个不同值中的前两条记录的任务。作为示例,请考虑以下 DataFrame:

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

传统上,您可以通过在按所需列分组后对每个组中的记录进行编号来解决此问题:

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

但是,更高效、更优雅的方法是利用 pandas 的 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

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

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