Pandas:高效提取每組中的前幾條記錄
取得DataFrame 中每組中的前幾筆記錄是資料操作中的常見任務。本文介紹了實現此目標的多種方法,包括受 SQL 視窗函數啟發的解決方案。
問題陳述:
給定一個帶有分組列和值列的 DataFrame,我們想要提取每個組的前 n 條記錄。
使用分組和行的樸素方法編號:
解決此問題的一種方法是應用分組操作,然後採用類似視窗函數的方法。這涉及到向每個組中的每筆記錄添加行號,然後根據該行號過濾頂部行。
實用解決方案:
更有效的解決方案包括使用分組 DataFrame 上的 head() 方法。預設情況下,head() 傳回每組中的前 n 筆記錄。這與獲取最高記錄的目標非常吻合。
刪除 MultiIndex:
要刪除分組操作所引入的MultiIndex,我們使用reset_index(drop=True):
輸出:
優雅的行編號方法:
雖然Pumber ()函數對於SQL,我們可以使用groupby() 和cumcount() 的組合來複製其功能。具體方法如下:
此方法在每個群組內分配唯一的行號,而無需引入額外的列或多重索引。
以上是如何有效率地提取 Pandas DataFrame 中每組的前 N 筆記錄?的詳細內容。更多資訊請關注PHP中文網其他相關文章!