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

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

Pandas:獲取 N 個最大值,如果沒有元素則插入 NaN 值

Pandas:獲取 N 個最大值,如果沒有元素則插入 NaN 值

小唯快跑啊 2023-08-08 17:36:00
我有以下數據框:    df = pd.DataFrame({'Farmer': ['John', 'Nick', 'Jane',  'Jane', 'John',  'Jane', 'John', 'Nick'],                       'Animal': ['Cow', 'Sheep', 'Dolphin', 'Sheep', 'Horse',  'Dinosaur', 'Pig', 'Horse'],                       'Weight': [200, 50 , 90 , 56, 180, 160, 150, 175]})        Farmer  Animal  Weight    0   John    Cow      200    1   Nick    Sheep    50    2   Jane    Dolphin  90    3   Jane    Sheep    56    4   John    Horse    180    5   Jane    Dinosaur 160    6   John    Pig      150    7   Nick    Horse    175我想按'Farmer'列對數據框進行分組,然后將每個農民的 3 只最大動物的重量分為 3 列。        Farmer  top1_animal_weight top2_animal_weight top3_animal_weight    0   John       200                   180               150              1   Nick       175                    50               NaN     2   Jane       160                    90               56首先,我嘗試將方法應用于每個組,但當沒有第三大元素時nlargest它不會返回。NaN而且我也不知道如何將一個重量列轉換為三個
查看完整描述

1 回答

?
縹緲止盈

TA貢獻2041條經驗 獲得超4個贊

rank您可以使用then創建列pivot


out = df.assign(Rank=df.groupby('Farmer')['Weight'].rank(ascending=False)).pivot(index='Farmer', columns='Rank',values='Weight')

Out[202]: 

Rank      1.0    2.0    3.0

Farmer                     

Jane    160.0   90.0   56.0

John    200.0  180.0  150.0

Nick    175.0   50.0    NaN


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

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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