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

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

Mary-Kate Olsen
發布: 2024-11-28 06:19:13
原創
930 人瀏覽過

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中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板