按值排序
Pandas中用来按值排序的方法为sort_values(),该方法的语法格式如下。
sort_values(by, axis=0, ascending=True, inplace=False, kind='quicksort',
na_position='last')
上述方法的参数与sort_index()的参数几乎一样。其中,by参数表示排序的列,na_position参数只有两个值:first和last,若设为first,则会将NaN值放在开头;若设为False,则会将NaN值放在最后。
按值的大小对Series进行排序的示例代码如下。
In [55]: ser_obj = pd.Series([4, np.nan, 6, np.nan, -3, 2])
ser_obj
Out[55]:
0 4.0
1 NaN
2 6.0
3 NaN
4 -3.0
5 2.0
dtype: float64
In [56]: ser_obj.sort_values() # 按值升序排列
Out[56]:
4 -3.0
5 2.0
0 4.0
2 6.0
1 NaN
3 NaN
dtype: float64
需要注意的是,当Series对象调用sort_values()方法按值进行排序时,所有缺失值默认都会放在末尾。
在DataFrame中,sort_values()方法可以根据一个或多个列中的值进行排序,但是需要在排序时,将一个或多个列的索引传递给by参数才行,示例代码如下:
In [57]: df_obj = pd.DataFrame([[0.4, -0.1, -0.3, 0.0],
[0.2, 0.6, -0.1, -0.7],
[0.8, 0.6, -0.5, 0.1]])
df_obj
Out[57]:
0 1 2 3
0 0.4 -0.1 -0.3 0.0
1 0.2 0.6 -0.1 -0.7
2 0.8 0.6 -0.5 0.1
In [58]: df_obj.sort_values(by=2) # 对列索引值为2的数据进行排序
Out[58]:
0 1 2 3
2 0.8 0.6 -0.5 0.1
0 0.4 -0.1 -0.3 0.0
1 0.2 0.6 -0.1 -0.7