1.1 sort_index方法
#Series排序
该方法可对行或列索引进行排序,返回一个已排序的新对象
In [17]: obj=Series(range(4),index=['d','a','b','c'])
In [18]: obj.sort_index()
Out[18]:
a 1
b 2
c 3
d 0
dtype: int32
#DataFrame排序
可以根据任意一个轴上的索引进行排序:
In [19]: frame=DataFrame(np.arange(8).reshape(2,4),index=['three','one'],columns=['d','a','b','c'])
In [20]: frame.sort_index() #默认axis=0
Out[20]:
d a b c
one 4 5 6 7
three 0 1 2 3
In [21]: frame.sort_index(axis=1)
Out[21]:
a b c d
three 1 2 3 0
one 5 6 7 4
1.2 升降序排序
默认是按升序(ascending=True)排序。
降序(ascending=False)排序如下:
In [22]: frame.sort_index(axis=1,ascending=False)
Out[22]:
d c b a
three 0 3 2 1
one 4 7 6 5
1.3 排序时的 Series缺失值
在排序时,任何缺失值默认都会被放到Series末尾:
In [24]: obj=Series([4,np.nan,7,np.nan,-3,2])
In [25]: obj.order()
__main__:1: FutureWarning: order is deprecated, use sort_values(...)
Out[25]:
4 -3.0
5 2.0
0 4.0
2 7.0
1 NaN
3 NaN
dtype: float64
1.4 DataFrame中的by排序
在DataFrame上,可能希望根据一个或多个列中的值进行排序。将一个或多个列的名字传递给by选项即可达到该目的:
In [26]: frame=DataFrame({'b':[4,7,-3,2],'a':[0,1,0,1]})
In [27]: frame
Out[27]:
a b
0 0 4
1 1 7
2 0 -3
3 1 2
In [28]: frame.sort_index(by='b')
__main__:1: FutureWarning: by argument to sort_index is deprecated, pls use .sort_values(by=...)
Out[28]:
a b
2 0 -3
3 1 2
0 0 4
1 1 7
In [30]: frame.sort_index(by=['a','b'])
__main__:1: FutureWarning: by argument to sort_index is deprecated, pls use .sort_values(by=...)
Out[30]:
a b
2 0 -3
0 0 4
3 1 2