zoukankan      html  css  js  c++  java
  • Python学习笔记:pd.sort_values实现排序

    pandas 中的 sort_values 函数类似于 SQL 中的 order by,可以将数据集依据特定的字段进行排序。

    可根据列数据,也可以根据行数据排序。

    一、介绍

    使用语法为:

    df.sort_values(by='xxx', axis=0, ascending=True, inplace=False,
                  kind='quicksort', na_position='last', ignore_index=False, key=None)
    

    参数:

    by -- 指定列名(axis=0或者'index')或索引值(axis=1或者'columns')
    axis -- 按行、按列,默认axis=0按指定列排序
    ascending -- 是否升序 默认为True
    inplace -- 是否修改原对象
    kind -- 排序算法 快排quicksort、归并mergesort、堆排序heapsort、稳定排序stable,默认快排
    na_position -- {'first', 'last'} 设定缺失值的显示位置
    ignore_index -- 排序后是否重置索引
    key -- 排序之前使用的函数 (version 1.1.0 后才有该参数)
    

    二、实操

    • 构建测试数据集
    # 构建测试数据集
    import numpy as np
    import pandas as pd
    df = pd.DataFrame({'col1':['A','A','B',np.nan,'D','C'],
                       'col2':[2,1,9,8,7,7],
                       'col3':[0,1,2,9,4,8]})
    print(df)
    '''
      col1  col2  col3
    0    A     2     0
    1    A     1     1
    2    B     9     2
    3  NaN     8     9
    4    D     7     4
    5    C     7     8
    '''
    
    • 按列排序
    # 依据第一列排序 并将该列空值放在首位
    df.sort_values(by='col1', na_position='first')
    
    # 依据第二、三列倒序
    df.sort_values(by=['col2', 'col3'], ascending=False)
    
    # 替换原数据
    df.sort_values(by='col1', inplace=True)
    
    • 按行排序
    # 按照索引值为0的行 即第一行的值来降序
    x = pd.DataFrame({'x1':[1,2,2,3],
                      'x2':[4,3,2,1],
                      'x3':[3,2,4,1]})
    print(x)
    x.sort_values(by=0, ascending=False, axis=1)
    '''
       x2  x3  x1
    0   4   3   1
    1   3   2   2
    2   2   4   2
    3   1   1   3
    '''
    
    • 多列顺序
    # 按第一列降序 第二列升序排列
    df.sort_values(by=['col1', 'col2'], ascending=[False, True])
    
    • 索引重置
    df.sort_values(by='col1', ignore_index=True)
    
    • key参数解释
    data1 = pd.DataFrame({
        'col1': [2, 1, 9, 8, 7, 4],
        'col2': [0, 1, 9, 4, 2, 3],
        'col3': ['a', 'e', 'F', 'B', 'c', 'D']
    })
    print(data1)
    '''
       col1  col2 col3
    0     2     0    a
    1     1     1    e
    2     9     9    F
    3     8     4    B
    4     7     2    c
    5     4     3    D
    '''
    
    # 默认字母排序 ASCII码
    data1.sort_values(by='col3') 
    
    # 先转换为小写字母再排序
    data1.sort_values(by='col3', key=lambda x: x.str.lower())
    

    参考链接:Pandas之排序函数sort_values()

    参考链接:pandas中sort_values()使用

    参考链接:图解pandas的排序sort_values机制

    参考链接:pandas.DataFrame.sort_values

  • 相关阅读:
    如何检索某个字段在sqlserver中的哪个些存储过程中?很简单的SQL语句。
    如何去掉HTML代码来获取纯文本?
    ajax实现跨域请求
    ajax实现跨域提交
    lab3
    Lab2
    hw2
    Homework1
    Lab1
    CS61B_学习计划和进程
  • 原文地址:https://www.cnblogs.com/hider/p/15400313.html
Copyright © 2011-2022 走看看