pandas df-按索引排序,但从排序中排除第一列

时间:2019-02-20 12:13:02

标签: python pandas sorting df

我想在行上对这个df进行排序(“糟糕的工作”),但是我想从排序中排除第一列,以便它保持在原位置:

          Radisson   Marriott   Hilton      IHG     
Category                                        
good job  0.214941   0.40394    0.448931    0.375316
bad  job  0.514941   0.10394    0.348931    0.475316
crap job  0.114941   0.20394    0.548931    0.175316

预期输出:

          Radisson   IHG        Hilton     Marriott   
Category                                        
good job  0.214941   0.375316   0.448931   0.40394
bad  job  0.514941   0.475316   0.348931   0.10394 
crap job  0.114941   0.175316   0.548931   0.20394 

我不知道在下面编辑我的代码以将第一列从排序中排除:

 df = df.sort_values(by=[df.index[1]], axis=1, ascending=False)

1 个答案:

答案 0 :(得分:1)

argsort与加1一起使用,可能的话将第一个值0reindex来增加位置,将最后更改列的顺序加iloc

s = df.iloc[0]
df = df.iloc[:, ((-s[1:]).argsort() + 1).reindex(df.columns, fill_value=0)]
print (df)
          Radisson    Hilton  Marriott       IHG
Category                                                     
good job  0.214941  0.448931   0.40394  0.375316