pandas实现按照多列排序-ascending

目录
  • pandas按照多列排序ascending
  • pandas排序、排名函数的使用
    • 排序
    • 排名

pandas按照多列排序ascending

代码示例:

import pandas as pd

#读取文件
df = pd.read_csv('./TianQi.csv')
#字符串替换和类型转换
df['最高温度'] = df['最高温度'].str.replace('℃','').astype('int32')
df.loc[:,'最低温度'] = df['最低温度'].str.replace('℃','').astype('int32')
#排序并获取最高温度前5名
print(df.sort_values(by='最高温度',ascending=False).head())
'''
打印:
            日期  最高温度  最低温度      天气   风向  风级 空气质量
184   2019/7/4    38    25    晴~多云  西南风  2级    良
206  2019/7/26    37    27       晴  西南风  2级    良
142  2019/5/23    37    21       晴  东南风  2级    良
183   2019/7/3    36    24       晴  东南风  1级    良
204  2019/7/24    36    27  多云~雷阵雨  西南风  2级    良
'''

#按照多列排序
print(df.sort_values(by=['最高温度','最低温度'],ascending= True).head(10))
'''
打印:
             日期  最高温度  最低温度     天气   风向  风级 空气质量
363  2019/12/30    -5   -12      晴  西北风  4级    优
364  2019/12/31    -3   -10      晴  西北风  1级    优
42    2019/2/12    -3    -8  小雪~多云  东北风  2级    优
44    2019/2/14    -3    -6  小雪~多云  东南风  2级    良
14    2019/1/15    -2   -10      晴  西北风  3级    良
37     2019/2/7    -2    -7     多云  东北风  3级    优
38     2019/2/8    -1    -7     多云  西南风  2级    优
4      2019/1/5     0    -8     多云  东北风  2级    优
39     2019/2/9     0    -8     多云  东北风  2级    优
40    2019/2/10     0    -8     多云  东南风  1级    优
'''
print(df.sort_values(by=['最高温度','最低温度'],ascending= False).head(10))
'''
打印:
           日期  最高温度  最低温度      天气   风向  风级  空气质量
184   2019/7/4    38    25    晴~多云  西南风  2级     良
206  2019/7/26    37    27       晴  西南风  2级     良
142  2019/5/23    37    21       晴  东南风  2级     良
201  2019/7/21    36    27    晴~多云  西南风  2级  轻度污染
204  2019/7/24    36    27  多云~雷阵雨  西南风  2级     良
207  2019/7/27    36    27      多云  东南风  2级  轻度污染
174  2019/6/24    36    24      多云  东南风  2级     良
175  2019/6/25    36    24      多云  东南风  2级     良
183   2019/7/3    36    24       晴  东南风  1级     良
170  2019/6/20    36    23    多云~晴  东南风  2级  轻度污染
'''
print(df.sort_values(by=['最高温度','最低温度'],ascending= [True,False]).head(10))
'''
打印:
             日期  最高温度  最低温度     天气   风向  风级 空气质量
363  2019/12/30    -5   -12      晴  西北风  4级    优
44    2019/2/14    -3    -6  小雪~多云  东南风  2级    良
42    2019/2/12    -3    -8  小雪~多云  东北风  2级    优
364  2019/12/31    -3   -10      晴  西北风  1级    优
37     2019/2/7    -2    -7     多云  东北风  3级    优
14    2019/1/15    -2   -10      晴  西北风  3级    良
38     2019/2/8    -1    -7     多云  西南风  2级    优
4      2019/1/5     0    -8     多云  东北风  2级    优
39     2019/2/9     0    -8     多云  东北风  2级    优
40    2019/2/10     0    -8     多云  东南风  1级    优
'''

pandas排序、排名函数的使用

排序

Series

s.sort_index(ascending=False)

对series的索引进行排序,默认升序

s.sort_values(ascending=False)

对series的值进行排序,对值进行排序的时候,无论是升序还是降序,缺失值(NaN)都会排在最后面

DataFrame:

dt.sort_index(ascending=False)#按列索引进行降序排序
dt.sort_inex(axis=1)#按行的索引进行排序
dt.sort_values(by='columns_name')#按指定列的值进行排序
dt.sort_values(by='row_name', axis=1)#按指定行的值进行排序

使用by参数进行某几列(行)排序的时候,以列表中的第一个为准,可能后面的不会生效,因为有的时候无法做到既对第一行(列)进行升序排序又对第二行(列)进行排序。

在指定行值进行排序的时候,必须设置axis=1,不然会报错,因为默认指定的是列索引,找不到这个索引所以报错,axis=1的意思是指定行索引。

排名

Series

s.rank(method=‘first')

对series的值进行升序排名,输出为排名,当排名相同时,输出平均排名,method=‘first’排名相同时按照值在数组中出现的顺序排序

method参数除了,first按值在原始数据中的出现顺序分配排名,还有min使用整个分组的最小排名,max是用整个分组的最大排名,average使用平均排名,也是默认的排名方式。还可以设置ascending参数,设置降序还是升序排序。

DataFrame:

dt.rank()#按列进行排名
dt.rank(axis=1)#按行进行排名

method与ascending参数的使用与Series的相同

以上为个人经验,希望能给大家一个参考,也希望大家多多支持我们。

(0)

相关推荐

  • Python数据分析Pandas Dataframe排序操作

    目录 1.索引的排序 2.值的排序 前言: 数据的排序是比较常用的操作,DataFrame 的排序分为两种,一种是对索引进行排序,另一种是对值进行排序,接下来就分别介绍一下. 1.索引的排序 DataFrame 提供了sort_index()方法来进行索引的排序,通过axis参数指定对行索引排序还是对列索引排序,默认为0,表示对行索引排序,设置为1表示对列索引进行排序:ascending参数指定升序还是降序,默认为True表示升序,设置为False表示降序, 具体使用方法如下: 对行索引进行降序

  • pandas分组排序 如何获取第二大的数据

    Python用来做数据分析很方便,网上很多关于找数据中第二大的方法,但是大多数都是关于SQL的,于是我挑战一下用Python来做这件事(主要是SQL写的不好>_<),上代码. 1.数据我是自己编的 在实际工作中应该从数据库中导入数据,如何从数据库导出数据,我之后会补充. import pandas as pd df = pd.DataFrame([ {"class": 1, "name": "aa", "english&qu

  • pandas按照列的值排序(某一列或者多列)

    按照某一列排序 d = {'A': [3, 6, 6, 7, 9], 'B': [2, 5, 8, 0, 0]} df = pd.DataFrame(data=d) print('排序前:\n', df) ''' 排序前: A B 0 3 2 1 6 5 2 6 8 3 7 0 4 9 0 ''' res = df.sort_values(by='A', ascending=False) print('按照A列的值排序:\n', res) ''' 按照A列的值排序: A B 4 9 0 3 7

  • pandas的排序、分组groupby及cumsum累计求和方式

    目录 生成一列sum_age 对age 进行累加 生成一列sum_age_new 按照 gender和is_good 对age进行累加 根据不同的性别对年龄进行 等级 排序 对数据排序之后,分组,并累计求和 pandas分组排序功能 生成一列sum_age 对age 进行累加 df['sum_age'] = df['age'].cumsum() print(df) 生成一列sum_age_new 按照 gender和is_good 对age进行累加 df['sum_age_new'] = df.

  • Pandas实现DataFrame的简单运算、统计与排序

    目录 一.运算 二.统计 三.排序 在前面的章节中,我们讨论了Series的计算方法与Pandas的自动对齐功能.不光是Series,DataFrame也是支持运算的,而且还是经常被使用的功能之一. 由于DataFrame的数据结构中包含了多行.多列,所以DataFrame的计算与统计可以是用行数据或者用列数据.为了更方便我们的使用,Pandas为我们提供了常用的计算与统计方法: 操作 方法 操作 方法 求和 sum 最大值 max 求均值 mean 最小值 min 求方差 var 标准差 st

  • pandas数值排序的实现实例

    目录 1.按照一列数值进行排序 1.1按照五缺失值的一列进行排序 1.1.1升序排列 1.1.2 降序排列 1.2按照有缺失值的一列进行排序 1.2.1 缺失值显示在最后 1.2.2 缺失值显示在最前面 2.按照多列数值进行排序 本文用到的表格内容如下: 排序前先来看一下原始情形: import pandas as pd ​ df = pd.read_excel(r'C:\Users\admin\Desktop\测试.xlsx') print(df) result:    姓名     年龄 

  • pandas实现按照多列排序-ascending

    目录 pandas按照多列排序ascending pandas排序.排名函数的使用 排序 排名 pandas按照多列排序ascending 代码示例: import pandas as pd #读取文件 df = pd.read_csv('./TianQi.csv') #字符串替换和类型转换 df['最高温度'] = df['最高温度'].str.replace('℃','').astype('int32') df.loc[:,'最低温度'] = df['最低温度'].str.replace('

  • python pandas 组内排序、单组排序、标号的实例

    摘要:本文主要是讲解一下,如何进行排序.分为两种情况,不分组进行排序和组内进行排序.什么意思呢?具体来说,我举个栗子. ****注意**** 如果只是单纯想对某一列进行排序,而不进行打序号的话直接使用.sort_values就可以了.下文是关于如何把序号也打上的 ---------------------------- 我们有一个数据集如下: 我们下面想进行两种排序.先说第一种比较简单的也是很常用的,简单的对某一列进行排序然后添加一列序号. 例如,我们队comment_num这一列进行从大到小的

  • pymongo实现多结果进行多列排序的方法

    本文实例讲述了pymongo实现多结果进行多列排序的方法.分享给大家供大家参考.具体分析如下: 这里多列排序即指定多个排序字段. 集合查询结果排序 复制代码 代码如下: >>> db.Account.find().sort("UserName")  --默认为升序 >>> db.Account.find().sort("UserName",pymongo.ASCENDING)   --升序 >>> db.Acco

  • ASP.Net2.0 GridView 多列排序,显示排序图标,分页

    最近在使用ASP.net 2.0的GridView 控件时,发现排序与分页功能Microsoft实现的都很简单,比如排序,在点击列名的时候来触发整页的PostBack,然后排序,但是在列头上没有一个显示升序降序的图标,这会让最终用户使用时很迷惑,因为不知道是升序了还是降序了,所以今天首先解决的第一问题就是升序降序在列上显示图标,第二要解决的问题是默认GridView按列排序只能排一列的,也就是不能进行多列排序,而在实际应用中仅仅按照一列来排序是不能满足业务需求的,第三是GridView 分页问题

  • pandas 透视表中文字段排序方法

    前几天有一个需求,透视表中的年级这一列要按照一年级,二年级这样的序列进行排序,但是用过透视表的人都知道,透视表对中文的排序不是太理想,放弃pandas自带的排序方法.测试了很久,想到一个办法.先把dataframe中需要特殊排序的列中的汉字转换成数字,然后生成透视表,生成透视表之后,再把透视表的index或者columns中的数字替换成相应的汉字,透视表的结果就会按照你想要的顺序进行排序. def get_special_sort_data(self, groupby, columns): #

  • 妙用Angularjs实现表格按指定列排序

    使用AngularJS的过滤器,可以很容易的实现在表格中,点击某一列标题进行排序,实现过程如下: html代码: <table class="table table-border" ng-app="myapp" ng-controller="orderByCtrl"> <thead> <tr> <th>inx</th> <th ng-click="col='name';d

  • Yii中CGridView禁止列排序的设置方法

    本文实例讲述了Yii中CGridView禁止列排序的设置方法.分享给大家供大家参考,具体如下: Yii中CGridView的功能是用来显示的数据列表.它支持排序,分页,和AJAX数据请求. 下面的代码演示了CGridView禁止列排序的设置方法: 'columns' => array ( array ( 'class' => 'CCheckBoxColumn', 'selectableRows' => '2', 'value' => '$data->id', 'id' =&g

  • Python实现二维数组按照某行或列排序的方法【numpy lexsort】

    本文实例讲述了Python实现二维数组按照某行或列排序的方法.分享给大家供大家参考,具体如下: lexsort支持对数组按指定行或列的顺序排序:是间接排序,lexsort不修改原数组,返回索引. (对应lexsort 一维数组的是argsort a.argsort()这么使用就可以:argsort也不修改原数组, 返回索引) 默认按最后一行元素有小到大排序, 返回最后一行元素排序后索引所在位置. 设数组a, 返回的索引ind,ind返回的是一维数组 对于一维数组, a[ind]就是排序后的数组.

  • pandas按若干个列的组合条件筛选数据的方法

    还是用图说话 A文件: 比如,我想筛选出"设计井别"."投产井别"."目前井别"三列数据都为11的数据,结果如下: 当然,这里的筛选条件可以根据用户需要自由调整,代码如下: # -*- coding: utf-8 -*- """ Created on Wed Nov 29 10:46:31 2017 @author: wq """ import pandas as pd #input.c

  • pandas将DataFrame的列变成行索引的方法

    pandas提供了set_index方法可以将DataFrame的列(多列)变成行索引,通过reset_index方法可以将层次化索引的级别会被转移到列里面. 1.DataFrame的set_index方法 data = pd.DataFrame(np.arange(1,10).reshape(3,3),index=["a","b","c"],columns=["A","B","C"])

随机推荐