要对行或列索引进行排序(字典排序),可以使用sort_index方法,它将返回一个已排序的新对象
obj = Series(range(4), index=['d', 'a', 'b', 'c'])
obj.sort_index()
对于DataFrame,可以根据任意一个轴上的索引进行排序
frame = DataFrame(np.arange(8).reshape((2, 4)), index=['three', 'one'],
columns=['d', 'a', 'b', 'c'])
frame.sort_index()
d a b c
one 4 5 6 7
three 0 1 2 3
按列排序
frame.sort_index(axis=1)
a b c d
three 1 2 3 0
one 5 6 7 4
数据默认是升序排序,可以设置为降序排序
frame.sort_index(axis=1, ascending=False)
若要对Series进行排序,可以使用order方法
obj = Series([4, 7, -3, 2])
obj.order()
在排序时,任何缺失值默认都放到Series的末尾
obj = Series([4, np.nan, 7, np.nan, -3, 2])
obj.order()
4 -3.0
5 2.0
0 4.0
2 7.0
1 NaN
3 NaN
dtype: float64
在DataFrame上,对一个或多个列中的值进行排序
frame = DataFrame({'b': [4, 7, -3, 2], 'a': [0, 1, 0, 1]})
frame.sort_index(by=['a', 'b'])
排名
排名与排序关系紧密,且会增设一个排名值。默认情况下,rank是通过“为各组分配一个平均排名”的方式破坏平级关系的。
obj = Series([7, -5, 7, 4, 2, 0, 4])
obj.rank()
0 6.5
1 1.0
2 6.5
3 4.5
4 3.0
5 2.0
6 4.5
dtype: float64
根据值在原数据中出现的顺序给出排名
obj.rank(method='first')
0 6.0
1 1.0
2 7.0
3 4.0
4 3.0
5 2.0
6 5.0
dtype: float64
采用降序方式排名
obj.rank(ascending=False, method='max')
0 2.0
1 7.0
2 2.0
3 4.0
4 5.0
5 6.0
6 4.0
dtype: float64
DataFrame排名
frame = DataFrame({'b': [4.3, 7, -3, 2], 'a': [0, 1, 0, 1],
'c': [-2, 5, 8, -2.5]})
frame.rank(axis=1)
对一个