我有以下數(shù)據(jù)框: 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'列對數(shù)據(jù)框進行分組,然后將每個農(nóng)民的 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首先,我嘗試將方法應(yīng)用于每個組,但當(dāng)沒有第三大元素時nlargest它不會返回。NaN而且我也不知道如何將一個重量列轉(zhuǎn)換為三個
1 回答

縹緲止盈
TA貢獻2041條經(jīng)驗 獲得超4個贊
rank您可以使用then創(chuàng)建列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
添加回答
舉報
0/150
提交
取消