按索引排序
在数据处理中,数据的排序也是常见的一种操作。由于Pandas中存放的是索引和数据的组合,所以它既可以按索引进行排序,也可以按数据进行排序。
Pandas中按索引排序使用的是sort_index()方法,该方法可以用行索引或者列索引进行排序。sort_index()方法的语法格式如下:
sort_index(axis = 0,level = None,ascending = True,inplace = False,kind =' quicksort ',
na_position ='last',sort_remaining = True)
上述方法中常用参数的说明如下:
(1) axis:轴索引(排序的方向),0表示index(按行),1表示columns(按列)。
(2) level:若不为None,则对指定索引级别的值进行排序。
(3) ascending:是否升序排列,默认为True表示升序。
(4) inplace:默认为False,表示对数据表进行排序,不创建新的实例。
(5) kind:选择排序算法。
默认情况下,Pandas对象是按照升序排列,当然也可以通过参数ascending=False改为降序排列。
接下来,通过一些简单的示例来演示如何按索引对Series和DataFrame进行分别排序,具体代码如下。
In [49]: import pandas as pd
ser_obj = pd.Series(range(10, 15), index=[5, 3, 1, 3, 2])
ser_obj
Out[49]:
5 10
3 11
1 12
3 13
2 14
dtype: int64
In [50]: ser_obj.sort_index() # 按索引进行升序排列
Out[50]:
1 12
2 14
3 11
3 13
5 10
dtype: int64
In [51]: ser_obj.sort_index(ascending = False) # 按索引进行降序排列
Out[51]:
5 10
3 11
3 13
2 14
1 12
dtype: int64
对DataFrame的索引进行排序,示例代码如下。
In [52]: import pandas as pd
import numpy as np
df_obj = pd.DataFrame(np.arange(9).reshape(3, 3), index=[4, 3, 5])
df_obj
Out[52]:
0 1 2
4 0 1 2
3 3 4 5
5 6 7 8
In [53]: df_obj.sort_index() # 按行索引升序排列
Out[53]:
0 1 2
3 3 4 5
4 0 1 2
5 6 7 8
In [54]: df_obj.sort_index(ascending=False) # 按行索引降序排列
Out[54]:
0 1 2
5 6 7 8
4 0 1 2
3 3 4 5
需要注意的是,当对DataFrame进行排序操作时,要注意轴的方向。如果没有指定axis参数的值,则默认会按照行索引进行排序;如果指定axis=1,则会按照列索引进行排序。