多列排序不按所有提供的列排序

时间:2019-05-20 14:04:10

标签: python pandas

Xmat <- model.matrix(~x + x:z, data=mydata)
Xmat <- Xmat[,-(colnames(Xmat)=="x")]

mod <- lm.2(~x + x:z, data=mydata, Xmat=Xmat, response=mydata$y)

以上是我的最终输出。以下是我的排序代码-

A           B                C            D           E
----------------------------------------------------------
85          0                0            0           0
399         0                0            0           0
35          0                0            0           0
206         0                0            0           0
24          0                0            0           9
341         0                0            1           0
6           0                0            4           0
19          0                0            4           0
21          6                0            6           0
3           7                1            4           2
170         0                2            0           0
150         0                2            0           0
216         0                2            1           0
336         0                2            4           0
2           0                2            4           0
6           0                3            0           0
53          0                3            0           0
40          0                3            0           0
23          0                3            1           0

我的数据已按df= df.sort_values(by=['C', 'D', 'E', 'B', 'A'], ascending=[True, True, True, True, False]) 正确排序,但是最后的A排序非常不正确。为什么没有正确排序?

1 个答案:

答案 0 :(得分:4)

顺序6, 53, 40建议A列包含字符串,而不是整数。因此,它是按字典顺序而不是按数字排序。

尝试

df['A'] = df['A'].astype(int)

然后再次尝试排序。

如果相关,请确保也将所有其他列也转换为整数,否则在处理具有2个或更多数字的“数字”时会遇到相同的问题。