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

如何有效率地檢索 Pandas DataFrame 中組內的前 N ​​筆記錄?

Barbara Streisand
發布: 2024-12-05 13:24:12
原創
1038 人瀏覽過

How Can I Efficiently Retrieve the Top N Records Within Groups in a Pandas DataFrame?

Pandas:高效檢索組內的最高記錄

考慮檢索 pandas DataFrame 中特定列的每個不同值中的前兩條記錄的任務。作為範例,請考慮以下DataFrame:

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

傳統上,您可以透過在按所需列分組後對每個群組中的記錄進行編號來解決此問題:

dfN = df.groupby('id').apply(lambda x:x['value'].reset_index()).reset_index()
登入後複製

但是,更有效率、更優雅的方法是利用pandas 的head函數:

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 並展平結果:

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
登入後複製

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

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