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