如何对数据框中的列进行排序,以使第一行中的值从最大到最小?

Xti*_*aan 3 python sorting dataframe pandas

我有以下数据框:

奥迪 现代 起亚 奔驰 特斯拉 大众汽车 沃尔沃
2019年 0.25 0.5 0.25
2020年 0.125 0.375 0.125 0.125 0.25
2021年 0.25 0.5 0.25

我想重新排列列,使第一行从最大到最小排序。所以列的顺序应该是梅赛德斯、奥迪/沃尔沃,其余的。

我尝试了df.sort_values()很多次,但总是出错。最常见的错误是关于 by 的用法。

moz*_*way 5

您可以根据第一行的排序顺序对列重新排序:

out = df[df.iloc[0].sort_values(ascending=False).index]
print(out)

# Output
      Mercedes  Audi  Volvo  Hyundai   Kia  Tesla     VW
2019     0.500  0.25   0.25      NaN   NaN    NaN    NaN
2020     0.375   NaN   0.25    0.125   NaN  0.125  0.125
2021     0.500   NaN    NaN      NaN  0.25    NaN  0.250
Run Code Online (Sandbox Code Playgroud)

  • 替代 `df.iloc[:, np.argsort(df.iloc[0].mul(-1).tolist())]` (2认同)