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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM