按多列对数据框进行排序

时间:2021-05-28 09:51:43

标签: python pandas

我需要使用以下代码根据多列对数据框进行排序(按降序):

df = df.sort_values(measures, ascending = (False,False,False,False,False))

其中 'measures' 是列名称的列表。因此,我只能得到按“度量”列表中的第一列 (ms1) 排序的数据框。

排序前的数据帧片段:

     Features      ms1    ...            ms4           ms5
0        age       0.188  ...            0.025         0.994
1        sex       0.556  ...            0.040         8.080
2         cp       0.437  ...            0.054         20.121
3   trestbps       0.199  ...            0.015         0.512
4       chol       0.194  ...            0.002         0.085
5        fbs       0.622  ...            0.030         0.055

排序后:

     Features      ms1    ...            ms4           ms5
5        fbs       0.622  ...            0.030         0.055
8      exang       0.593  ...            0.023         36.842
1        sex       0.556  ...            0.040         8.080
12      thal       0.527  ...            0.007         1.902
6    restecg       0.488  ...            0.067         1.219

有谁知道为什么它不能正常工作

2 个答案:

答案 0 :(得分:1)

'ascending' 参数根据 documentation 使用 bool 或 bool 列表。 所以,试试这个 -

df.sort_values(measures, ascending = [False,False,False,False,False])

答案 1 :(得分:1)

当您按第一列 (ms1) 排序时,其他列在 ms1 之后。但如果 ms1 中有相同的值,则相同值的行将按第二列对值进行排序。依此类推...