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

上一篇:往返的最大路径和


下一篇:执行update语句,用没用到索引,区别大吗?