如何按顺序对负序中的正值和负值进行排序

时间:2016-08-18 02:52:50

标签: pandas

我有一个系列tt=pd.Series([-1,5,4,0,-7,-9])。现在我想排序'。

正值按排序顺序排序,负值按降序排序。正值在负值前面。

我想得到以下结果。

4,5,0,-1,-7,-9

有没有一种很好的方法来获得结果?

2 个答案:

答案 0 :(得分:2)

您希望先对tt <= 0进行排序。请注意,对于负数而言,True为零,对于正数为False。对此进行排序首先是积极的。然后按tt.abs()排序。这会将最小的数字放在第一位。

df = pd.concat([tt, tt.abs(), tt.le(0)], axis=1)
df.sort_values([2, 1])[0]

2    4
1    5
3    0
0   -1
4   -7
5   -9
Name: 0, dtype: int64

答案 1 :(得分:1)

这有点过于扩展,但它可以为您提供所需的输出:

import pandas as pd

tt=pd.Series([-1,5,4,0,-7,-9])

pd.concat((tt[tt > 0].sort_values(ascending=True), tt[tt <= 0].sort_values(ascending=False)))

Out[1]: 
0    4
1    5
2    0
3   -1
4   -7
5   -9

希望这有帮助。