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