我有一个系列tt=pd.Series([-1,5,4,0,-7,-9])
。现在我想排序'。
正值按排序顺序排序,负值按降序排序。正值在负值前面。
我想得到以下结果。
4,5,0,-1,-7,-9
有没有一种很好的方法来获得结果?
答案 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
希望这有帮助。