我有以下 df,我想保留 ID 的最新發生率。事件范圍為 1 - 3。1 是最近的,3 是最少的。
| ID | 事件 |
|---|---|
| 001 | 1 |
| 001 | 2 |
| 001 | 3 |
| 002 | 1 |
| 002 | 1 |
| 002 | 1 |
| 002 | 1 |
| 002 | 3 |
| A003 | 2 |
| A003 | 2 |
| A003 | 3 |
輸出
| ID | 事件 |
|---|---|
| 001 | 1 |
| 002 | 1 |
| 002 | 1 |
| 002 | 1 |
| 002 | 1 |
| A003 | 2 |
| A003 | 2 |
uj5u.com熱心網友回復:
您可以首先根據您的 ID 對資料集進行分組,然后使用groupby()和為每個組選擇最小值min()。
然后,您將此結果與您的原始資料幀連接起來,merge并使用引數indicator集True將顯示哪些行屬于最小值。
最后一步是使用loc過濾資料框將為您提供答案:
m = df.groupby('ID',as_index=False).agg({'Incident':'min'})
out = df.loc[pd.merge(df,m,how='left',indicator=True)._merge.eq('both')]
列印回來:
print(out)
ID Incident
0 1 1
3 2 1
4 2 1
5 2 1
6 2 1
8 A003 2
9 A003 2
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/397550.html
