pandas之sorting排序
下面创建一组 DataFrame 数据,如下所示:
- import pandas as pd
- import numpy as np
- #行标签乱序排列,列标签乱序排列
- unsorted_df=pd.DataFrame(np.random.randn(10,2),index=[1,6,4,2,3,5,9,8,0,7],columns=['col2','col1'])
- 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 进行排序。默认情况下,按照行标签序排序。
- import pandas as pd
- import numpy as np
- unsorted_df = pd.DataFrame(np.random.randn(10,2),index=[1,4,6,2,3,5,9,8,0,7],columns = ['col2','col1'])
- sorted_df=unsorted_df.sort_index()
- 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参数,可以控制排序的顺序(行号顺序)。示例如下:
- import pandas as pd
- import numpy as np
- unsorted_df = pd.DataFrame(np.random.randn(10,2),index=[1,4,6,2,3,5,9,8,0,7],columns = ['col2','col1'])
- sorted_df = unsorted_df.sort_index(ascending=False)
- 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 则表示按列排序。
- import pandas as pd
- import numpy as np
- unsorted_df = pd.DataFrame(np.random.randn(10,2),index=[1,4,6,2,3,5,9,8,0,7],columns = ['col2','col1'])
- sorted_df=unsorted_df.sort_index(axis=1)
- 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 列名。示例如下:
- import pandas as pd
- import numpy as np
- unsorted_df = pd.DataFrame({'col1':[2,1,1,1],'col2':[1,3,2,4]})
- sorted_df = unsorted_df.sort_values(by='col1')
- print (sorted_df)
输出结果:
col1 col2
1 1 3
2 1 2
3 1 4
0 2 1
注意:当对 col1 列排序时,相应的 col2 列的元素值和行索引也会随 col1 一起改变。by 参数可以接受一个列表参数值,如下所示:
- import pandas as pd
- import numpy as np
- unsorted_df = pd.DataFrame({'col1':[2,1,1,1],'col2':[1,3,2,4]})
- sorted_df = unsorted_df.sort_values(by=['col1','col2'])
- 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 归并排序是最稳定的算法。
- import pandas as pd
- import numpy as np
- unsorted_df = pd.DataFrame({'col1':[2,1,1,1],'col2':[1,3,2,4]})
- sorted_df = unsorted_df.sort_values(by='col1' ,kind='mergesort')
- print (sorted_df)
输出结果:
col1 col2
1 1 3
2 1 2
3 1 4
0 2 1
pandas之sorting排序的更多相关文章
- 20160308001 GridView的Sorting排序
参考地址: http://www.cnblogs.com/yinluhui0229/archive/2011/08/01/2124169.html 功能介绍:单击gridview的某一列列头,可以对该 ...
- PAT 1028 List Sorting[排序][一般]
1028 List Sorting (25)(25 分) Excel can sort records according to any column. Now you are supposed to ...
- 1、pandas使用sort_values排序
用Numpy库的randn函数生成一个完整的DataFrame: DataFrame有多个参数: data就是要转换成DataFrame的内容,很多数据类型都可以转换成DataFrame,比如:Ser ...
- pandas 多列排序
import pandas as pd df = pd.DataFrame({'AAA' : [1,2,1,3], 'BBB' : [1,1,2,2], 'CCC' : [2,1,3,1]}) sou ...
- poj1007-DNA Sorting(排序)
一,题意: 输入N个字符串,按照字符串的逆序数由最少到最大开始输出. 注意:如果逆序数相同,就原来顺序输出. 二,思路步骤: 1,输入,并用a[]存储每行字符串的逆序数; 2,冒泡排序a[]的同时换掉 ...
- Bzoj 4371: [IOI2015]sorting排序 二分
题目 似乎很久没写题解了... 这题是校里胡策的时候的题,比赛因为评测机有点慢+自己代码常数大没快读...被卡t了,但是bzoj上还是A了的...,因为bzoj时限比较宽可以不卡常. 题解: 首先可以 ...
- 【转载】使用Pandas对数据进行筛选和排序
使用Pandas对数据进行筛选和排序 本文转载自:蓝鲸的网站分析笔记 原文链接:使用Pandas对数据进行筛选和排序 目录: sort() 对单列数据进行排序 对多列数据进行排序 获取金额最小前10项 ...
- 快速入门pandas进行数据挖掘数据分析[多维度排序、数据筛选、分组计算、透视表](一)
1. 快速入门python,python基本语法 Python使用缩进(tab或者空格)来组织代码,而不是像其 他语言比如R.C++.Java和Perl那样用大括号.考虑使用for循 环来实现排序算法 ...
- java实现8种排序算法(详细)
八种排序分别是:直接插入排序.希尔排序.冒泡排序.快速排序.直接选择排序.堆排序.归并排序.基数排序. 希尔排序在时间性能上优于直接插入排序,但希尔排序是一种不稳定排序. 快速排序的时间性能也优于冒泡 ...
- java实现八种排序算法并测试速度(详细)
算法代码: /** * Created by CLY on 2017/3/17. */ package pers.cly.sorting; /** * 排序工具类,里面包含各种排序方法 */ publ ...
随机推荐
- C 语言 scanf 格式化输入函数
C 语言 scanf 格式化输入函数 函数概要 scanf 函数从标准输入流中读取格式化字符串.与 printf 格式化输出函数相反,scanf 函数是格式化输入函数. 函数原型 #include & ...
- UI自动化之【chromedriver.exe无法删除问题】
想删掉chromedriver.exe,结果提示被打开 在任务管理器中,找到Chromedriver.exe,结束进程
- 初识 Linux Shell
初识 Linux Shell 本书学习的第一步,就是要找到 Linux 终端的所在位置.目前较常见的图形化终端有 Konsole.Gnome terminal.xterm 等几种.一般安装后在各个发行 ...
- 区分 PaaS、IaaS 、SaaS
- oracle vm virtualBox 虚拟机共享磁盘后报错
不能为虚拟电脑 xxx2打开一个新任务. Locking of attached media failed. A possible reason is that one of the media is ...
- ubuntu通过ftp向小米手机传输多个文件
输入ftp命令,连接手机 root@wanboo-Inspiron-5570:~# ftp 192.168.1.104 2121 Connected to 192.168.1.104. 220 Swi ...
- MySQL Workbench常用快捷键及修改方法
常用快捷键: 1. 执行整篇sql脚本:Ctrl + Shift + Enter 2. 执行当前行:Ctrl + Enter 3. 注释/取消注释: Ctrl + / 4. 格式化sql语句(美化sq ...
- 【随笔】Tomcat部署图片服务器Server.xml配置记录
在tomcat应用conf/server.xml文件的标签中添加下面内容: <Service name="imageService"> <!--分配8089端口 ...
- mysql知识点二
1.mysql中的语言有哪些?分别代表什么意思1.DDL(Data Define Language) 数据定义语言2.DML(Data Manipulation Language) 数据操作语言3.D ...
- 关于Appium执行用例过程中问题处理办法
关于Appium执行用例过程中问题处理办法 1. 运行环境 1.1 windows10 64位系统 1.2 华为荣耀V10 Android 9 1.3 appium-desktop 1 ...