Python 中对数据的排序问题(numpy , pandas)

来源:互联网 发布:mysql 查询总数和分页 编辑:程序博客网 时间:2024/05/22 03:02

数据分析过程中,经常遇到按指定的某一列或者某几列进行排序问题,下面分别介绍用 numpy 和 pandas 实现此功能的函数及方法

数据准备

import numpy as npfrom pandas import DataFramea=np.array([[1,0,6],[1,7,0],[2,4,0],[2,3,1]])print (a)[[1 0 6] [1 7 0] [2 4 0] [2 3 1]]

我们的目标是按第 3 列升序排序,在此基础上,在按第 1 列降序排序,即得到如下效果:

[[2, 4, 0], [1, 7, 0], [2, 3, 1], [1, 0, 6]]

numpy 实现

numpy 中的 numpy.argsort()numpy.lexsort() 可以返回升序排序后的索引,不同的是numpy.lexsort() 可以接受多列,即可以进行子排序.

idex=np.lexsort([-1*a[:,0],a[:,2]])a_sort=a[idex,:]print (a_sort)[[2 4 0] [1 7 0] [2 3 1] [1 0 6]]

要注意的是 numpy.lexsort() 先按后面的参数进行排序

pandas 实现

用 pandas 实现相同的功能会更简单些:

df=DataFrame(a)a_sort=df.sort([2,0],ascending=[1,0])print (a_sort.values)[[2 4 0] [1 7 0] [2 3 1] [1 0 6]]
0 0
原创粉丝点击