首頁 >後端開發 >Python教學 >如何有效率地取得 Pandas DataFrame 中每組的前幾筆記錄?

如何有效率地取得 Pandas DataFrame 中每組的前幾筆記錄?

Barbara Streisand
Barbara Streisand原創
2024-11-25 18:03:10687瀏覽

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