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

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

Linda Hamilton
發布: 2024-11-25 03:16:14
原創
554 人瀏覽過

How to Efficiently Get the Top N Records within Each Group of a Pandas DataFrame?

取得DataFrame 中每組的前n 筆記錄

要取得DataFrame 中每個群組的前n 條記錄,請考慮使用Pandas 的有效的方法。假設我們有以下包含「id」和「value」欄位的DataFrame:

df = pd.DataFrame({'id': [1, 1, 1, 2, 2, 2, 2, 3, 4], 'value': [1, 2, 3, 1, 2, 3, 4, 1, 1]})
登入後複製

使用groupby() 和head() 函數,我們可以擷取每個「id」的前2 個記錄:

df_top2 = df.groupby('id').head(2)
登入後複製

輸出:

       id  value
id             
1  0   1      1
   1   1      2 
2  3   2      1
   4   2      2
3  7   3      1
4  8   4      1
登入後複製

為了展平MultiIndex並消除重複的行索引, apply reset_index():

df_top2 = df.groupby('id').head(2).reset_index(drop=True)
登入後複製

結果:

    id  value
0   1      1
1   1      2
2   2      1
3   2      2
4   3      1
5   4      1
登入後複製

或者,如果在為每組選擇前n 之前需要對記錄進行排序,請先套用排序:

df_sorted = df.sort_values('value', ascending=False)
df_top2 = df_sorted.groupby('id').head(2)
登入後複製

這提供了一種更有效率、更優雅的方法來取得DataFrame中每個組中的頂級記錄。

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

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