請參閱熊貓 df:pd.DataFrame({'id': [1, 1, 2, 2, 2, 3], 'pay_date': ['Jul1', 'Jul2', 'Jul8', 'Aug5', 'Aug7', 'Aug22'], 'id_ind': [1, 2, 1, 2, 3, 1]})我正在嘗試按“id”和“pay_date”進行分組。我只想在按“id”和“pay_date”分組后將 df['id_ind'].nlargest(2) 保留在數據框中。這是我的代碼:df = pd.DataFrame(df.groupby(['id', 'pay_date'])['id_ind'].apply(lambda x: x.nlargest(2)).reset_index()這不起作用,因為新的 df 返回所有記錄。如果有效,'id'==2 只會在 df 中出現兩次,因為有 3 條記錄,而我只想要 2 個最大的'id_ind'。我想要的輸出:pd.DataFrame({'id': [1, 1, 2, 2, 3], 'pay_date': ['Jul1', 'Jul2', 'Aug5', 'Aug7', 'Aug22'], 'id_ind': [1, 2, 2, 3, 1]})
1 回答

BIG陽
TA貢獻1859條經驗 獲得超6個贊
排序id_ind和做groupby.tail
df_final = (df.sort_values('id_ind').groupby('id').tail(2)
.sort_index()
.reset_index(drop=True))
Out[29]:
id id_ind pay_date
0 1 1 Jul1
1 1 2 Jul2
2 2 2 Aug5
3 2 3 Aug7
4 3 1 Aug22
添加回答
舉報
0/150
提交
取消