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中文网其他相关文章!