亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

pandas groupby 和 lambda 函數返回 nlargest(2)

pandas groupby 和 lambda 函數返回 nlargest(2)

月關寶盒 2023-04-18 15:42:30
請參閱熊貓 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


查看完整回答
反對 回復 2023-04-18
  • 1 回答
  • 0 關注
  • 149 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號