Pands 提供了两种排序方法,分别是按标签排序和按数值排序。本节讲解 Pandas 的排序操作。

下面创建一组 DataFrame 数据,如下所示:

  1. import pandas as pd
  2. import numpy as np
  3. #行标签乱序排列,列标签乱序排列
  4. unsorted_df=pd.DataFrame(np.random.randn(10,2),index=[1,6,4,2,3,5,9,8,0,7],columns=['col2','col1'])
  5. print(unsorted_df)

输出结果:

       col2      col1
1 -0.053290 -1.442997
6 -0.203066 -0.702727
4 0.111759 0.965251
2 -0.896778 1.100156
3 -0.458899 -0.890152
5 -0.222691 -0.144881
9 -0.921674 0.510045
8 -0.130748 -0.734237
0 0.617717 0.456848
7 0.804284 0.653961

上述示例,行标签和数值元素均未排序,下面分别使用标签排序、数值排序对其进行操作。

按标签排序

使用 sort_index() 方法对行标签排序,指定轴参数(axis)或者排序顺序。或者可以对 DataFrame 进行排序。默认情况下,按照行标签序排序。

  1. import pandas as pd
  2. import numpy as np
  3. unsorted_df = pd.DataFrame(np.random.randn(10,2),index=[1,4,6,2,3,5,9,8,0,7],columns = ['col2','col1'])
  4. sorted_df=unsorted_df.sort_index()
  5. print(sorted_df)

输出结果:

       col2      col1
0 2.113698 -0.299936
1 -0.550613 0.501497
2 0.056210 0.451781
3 0.074262 -1.249118
4 -0.038484 -0.078351
5 0.812215 -0.757685
6 0.687233 -0.356840
7 -0.483742 0.632428
8 -1.576988 -1.425604
9 0.776720 1.182877

1) 排序顺序

通过将布尔值传递给ascending参数,可以控制排序的顺序(行号顺序)。示例如下:

  1. import pandas as pd
  2. import numpy as np
  3. unsorted_df = pd.DataFrame(np.random.randn(10,2),index=[1,4,6,2,3,5,9,8,0,7],columns = ['col2','col1'])
  4. sorted_df = unsorted_df.sort_index(ascending=False)
  5. print(sorted_df)

输出结果:

       col2      col1
9 2.389933 1.152328
8 -0.374969 0.182293
7 -0.823322 -0.104431
6 -0.566627 -1.020679
5 1.021873 0.315927
4 0.127070 -1.598591
3 0.258097 0.389310
2 -1.027768 -0.582664
1 0.766471 -0.043638
0 0.482486 -0.512309

按列标签排序

通过给 axis 轴参数传递 0 或 1,可以对列标签进行排序。默认情况下,axis=0 表示按行排序;而 axis=1 则表示按列排序。

  1. import pandas as pd
  2. import numpy as np
  3. unsorted_df = pd.DataFrame(np.random.randn(10,2),index=[1,4,6,2,3,5,9,8,0,7],columns = ['col2','col1'])
  4. sorted_df=unsorted_df.sort_index(axis=1)
  5. print (sorted_df)

输出结果:

       col1      col2
1 -1.424992 -0.062026
4 -0.083513 1.884481
6 -1.335838 0.838729
2 -0.085384 0.178404
3 1.198965 0.089953
5 1.400264 0.213751
9 -0.992759 0.015740
8 1.586437 -0.406583
0 -0.842969 0.490832
7 -0.310137 0.485835

按值排序

与标签排序类似,sort_values() 表示按值排序。它接受一个by参数,该参数值是要排序数列的  DataFrame 列名。示例如下:

  1. import pandas as pd
  2. import numpy as np
  3. unsorted_df = pd.DataFrame({'col1':[2,1,1,1],'col2':[1,3,2,4]})
  4. sorted_df = unsorted_df.sort_values(by='col1')
  5. print (sorted_df)

输出结果:

   col1  col2
1 1 3
2 1 2
3 1 4
0 2 1

注意:当对 col1 列排序时,相应的 col2 列的元素值和行索引也会随 col1 一起改变。by 参数可以接受一个列表参数值,如下所示:

  1. import pandas as pd
  2. import numpy as np
  3. unsorted_df = pd.DataFrame({'col1':[2,1,1,1],'col2':[1,3,2,4]})
  4. sorted_df = unsorted_df.sort_values(by=['col1','col2'])
  5. print (sorted_df)

输出结果:

   col1  col2
2 1 2
1 1 3
3 1 4
0 2 1

排序算法

sort_values() 提供了参数kind用来指定排序算法。这里有三种排序算法:

  • mergesort
  • heapsort
  • quicksort

默认为 quicksort(快速排序) ,其中 Mergesort 归并排序是最稳定的算法。

  1. import pandas as pd
  2. import numpy as np
  3. unsorted_df = pd.DataFrame({'col1':[2,1,1,1],'col2':[1,3,2,4]})
  4. sorted_df = unsorted_df.sort_values(by='col1' ,kind='mergesort')
  5. print (sorted_df)

输出结果:

   col1  col2
1 1 3
2 1 2
3 1 4
0 2 1

pandas之sorting排序的更多相关文章

  1. 20160308001 GridView的Sorting排序

    参考地址: http://www.cnblogs.com/yinluhui0229/archive/2011/08/01/2124169.html 功能介绍:单击gridview的某一列列头,可以对该 ...

  2. PAT 1028 List Sorting[排序][一般]

    1028 List Sorting (25)(25 分) Excel can sort records according to any column. Now you are supposed to ...

  3. 1、pandas使用sort_values排序

    用Numpy库的randn函数生成一个完整的DataFrame: DataFrame有多个参数: data就是要转换成DataFrame的内容,很多数据类型都可以转换成DataFrame,比如:Ser ...

  4. pandas 多列排序

    import pandas as pd df = pd.DataFrame({'AAA' : [1,2,1,3], 'BBB' : [1,1,2,2], 'CCC' : [2,1,3,1]}) sou ...

  5. poj1007-DNA Sorting(排序)

    一,题意: 输入N个字符串,按照字符串的逆序数由最少到最大开始输出. 注意:如果逆序数相同,就原来顺序输出. 二,思路步骤: 1,输入,并用a[]存储每行字符串的逆序数; 2,冒泡排序a[]的同时换掉 ...

  6. Bzoj 4371: [IOI2015]sorting排序 二分

    题目 似乎很久没写题解了... 这题是校里胡策的时候的题,比赛因为评测机有点慢+自己代码常数大没快读...被卡t了,但是bzoj上还是A了的...,因为bzoj时限比较宽可以不卡常. 题解: 首先可以 ...

  7. 【转载】使用Pandas对数据进行筛选和排序

    使用Pandas对数据进行筛选和排序 本文转载自:蓝鲸的网站分析笔记 原文链接:使用Pandas对数据进行筛选和排序 目录: sort() 对单列数据进行排序 对多列数据进行排序 获取金额最小前10项 ...

  8. 快速入门pandas进行数据挖掘数据分析[多维度排序、数据筛选、分组计算、透视表](一)

    1. 快速入门python,python基本语法 Python使用缩进(tab或者空格)来组织代码,而不是像其 他语言比如R.C++.Java和Perl那样用大括号.考虑使用for循 环来实现排序算法 ...

  9. java实现8种排序算法(详细)

    八种排序分别是:直接插入排序.希尔排序.冒泡排序.快速排序.直接选择排序.堆排序.归并排序.基数排序. 希尔排序在时间性能上优于直接插入排序,但希尔排序是一种不稳定排序. 快速排序的时间性能也优于冒泡 ...

  10. java实现八种排序算法并测试速度(详细)

    算法代码: /** * Created by CLY on 2017/3/17. */ package pers.cly.sorting; /** * 排序工具类,里面包含各种排序方法 */ publ ...

随机推荐

  1. 第8章 使用标记帮助工具构建表单(ASP.NET Core in Action, 2nd Edition)

    本章包括 使用Tag Helpers轻松构建表单 使用锚标记帮助程序生成URL 使用Tag Helpers为Razor添加功能 在第7章中,您了解了Razor模板以及如何使用它们为应用程序生成视图.通 ...

  2. linux安装mongo-c-driver

    yum install mongo-c-driver sudo yum install cmake openssl-devel cyrus-sasl-devel $ wget https://gith ...

  3. 测试--MD5--加密

    CREATE TABLE `test`.`testmd5` ( `id` INT ( 4 ) NOT NULL, `name` VARCHAR ( 20 ) NOT NULL, `pwd` VARCH ...

  4. vue中的普通函数与箭头函数以及this关键字

    普通函数 普通函数指的是用function定义的函数 var hello = function () { console.log("Hello, Fundebug!"); } 箭头 ...

  5. liunx密码破解

    重启系统后出现GRUB界面在引导装载程序菜单上,用上下方向键选择你忘记密码的那个系统键入"e" 来进入编辑模式.进入"编辑模式"之后用上下方向键上下移动光标,找 ...

  6. 基于AI边缘智能网关的工业质检应用

    成品质量检验是工业生产最后必不可少的环节,随着我国工业化的蓬勃发展,工业产品日益迈向高端化.精密化,对于工业产品的质量检验要求和投入成本也在不断提高,产品质检涉及到比以往更多维度.更多零部件.更高精度 ...

  7. loadrunner之录制脚本

    LoadRunner是一款性能测试软件,通过模拟真实的用户行为,通过负载.并发和性能实时监控以及完成后的测试报告,分析系统可能存在的瓶颈,LoadRunner最为有效的手段之一应该就是并发控制,通过在 ...

  8. liunx服务器搭建jenkins环境

    服务器搭建jenkins 持续集成环境(1)-Jenkins安装 1)安装JDK Jenkins需要依赖JDK,所以先安装JDK1.8 yum install java-1.8.0-openjdk* ...

  9. [UnityAI]行为树的中断机制

    参考链接: https://www.cnblogs.com/01zxs/p/9863715.html https://blog.csdn.net/AcmHonor/article/details/12 ...

  10. 基于 Istio 的灰度发布架构方案实践之路

    作者:京东物流 赵勇萍 1. 背景介绍 灰度发布,又名金丝雀发布,是指能够平滑过渡的一种发布方式.基于系统稳定性和快速业务迭代的综合考虑,业务应用开发团队采取了新版本服务灰度上线的方式,即新版本服务并 ...