为了账号安全,请及时绑定邮箱和手机立即绑定

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 关注
  • 110 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信