按列而不是行对值排序

时间:2020-01-07 12:39:50

标签: python pandas sorting

希望您能帮助我解决这个愚蠢的问题。

我需要按最高值对列进行排序。我的数据框由31列组成,前7列看起来像这样。

enter image description here

我需要看起来像这样

enter image description here

我已经尝试过使用此代码

sorted_df = df_1.sort_values(df_1.last_valid_index(), axis=1)

但是它行不通。基本上,在所有列中,我需要找到具有最高值的6列。你能帮我吗 ?

谢谢!

1 个答案:

答案 0 :(得分:2)

您可以转置,排序和转置

df = pd.DataFrame( { "name": ["messi"], "height": [170], "weight":[72], "attack_cross":[88] })

df.T[df.T.index != 'name'].sort_values(0,ascending = False).T

给予

        height  attack_cross    weight
0       170     88              72

添加玩家名称,您就很好。

如果只想要前6个,则可以添加head(6)

df.T[df.T.index != 'name'].sort_values(0,ascending = False).head(6).T