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

如何有效率地提取 Pandas DataFrame 中每組的前 N ​​筆記錄?

Mary-Kate Olsen
Mary-Kate Olsen原創
2024-11-28 06:19:13880瀏覽

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

Pandas:高效提取每組中的前幾條記錄

取得DataFrame 中每組中的前幾筆記錄是資料操作中的常見任務。本文介紹了實現此目標的多種方法,包括受 SQL 視窗函數啟發的解決方案。

問題陳述:
給定一個帶有分組列和值列的 DataFrame,我們想要提取每個組的前 n 條記錄。

使用分組和行的樸素方法編號:
解決此問題的一種方法是應用分組操作,然後採用類似視窗函數的方法。這涉及到向每個組中的每筆記錄添加行號,然後根據該行號過濾頂部行。

實用解決方案:
更有效的解決方案包括使用分組 DataFrame 上的 head() 方法。預設情況下,head() 傳回每組中的前 n 筆記錄。這與獲取最高記錄的目標非常吻合。

刪除 MultiIndex:
要刪除分組操作所引入的MultiIndex,我們使用reset_index(drop=True):

輸出:

優雅的行編號方法:
雖然Pumber ()函數對於SQL,我們可以使用groupby() 和cumcount() 的組合來複製其功能。具體方法如下:

此方法在每個群組內分配唯一的行號,而無需引入額外的列或多重索引。

以上是如何有效率地提取 Pandas DataFrame 中每組的前 N ​​筆記錄?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn