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

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

Linda Hamilton
Linda Hamilton原創
2024-11-25 03:16:14618瀏覽

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

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