列表中的sort和sorted
- sort是inplace排序,且sort是列表的一个函数
In [25]: a=[2,3,1]
In [26]: a.sort()
In [27]: a
Out[27]: [1, 2, 3]
注意:列表调用sort方法后是没有返回值的。
如果在使用的时候,忘记这个,是非常崩溃的。
- sorted是对所有可迭代对象排序
In [34]: students = [('john', 'A', 15), ('jane', 'B', 12), ('dave', 'B', 10),]
In [35]: sorted(students,key=lambda x:x[2])
Out[35]: [('dave', 'B', 10), ('jane', 'B', 12), ('john', 'A', 15)]
其中key为函数,输入为可迭代对象中的元素,传出为索引为2的元素。于是,就是按照students中元素索引为2的对象排序。
pandas中的sort_index和sort_values
- sort_index
DataFrame.sort_index(axis=1,ascending=False)
如函数名称所示,是按照索引来排序。
那么就需要知道哪个轴的索引排序,因而需要参数axis
其中axis=1表示对所有的columns进行排序,下面的数也跟着发生移动。后面的ascending=False表示按降序排列,参数默认为升序。
- sort_values
DataFrame.sort_values(by, axis=0, ascending=True, inplace=False, kind='quicksort', na_position='last')
显然,如函数名称所示,是按照值排序。既然需要按照值来排序,那么肯定需要知道哪个轴(参数axis),和轴中的哪一条数据(参数by)。
按照轴0或轴1,再根据元素值的大小排序。
In [20]: b
Out[20]:
0 1 2 3
0 2 1 2 3
1 6 5 6 7
2 10 9 10 11
In [23]: b.sort_values(axis=1,by=0,ascending=False)
Out[23]:
3 0 2 1
0 3 2 2 1
1 7 6 6 5
2 11 10 10 9