📜  Python|熊猫系列.sort_index()(1)

📅  最后修改于: 2023-12-03 15:04:27.532000             🧑  作者: Mango

Python | 熊猫系列 .sort_index()

简介

Pandas是一个Python语言编写的计算库,非常适用于数据挖掘和数据分析。而Pandas熊猫系列中的.sort_index()方法则是对数据帧或系列的索引进行排序的函数。

该函数可以根据索引标签或者索引位置,进行升序或降序排序。另外,.sort_values()方法和.sort_index()方法类似,不过前者是对值而不是索引进行排序。

语法

pandas.DataFrame.sort_index(axis=0, level=None, ascending=True, inplace=False, kind='quicksort', na_position='last', sort_remaining=True, ignore_index: bool = False) -> Union[None, 'DataFrame']

主要参数解析:

  • axis:默认值0,表示列索引,1表示行索引
  • level:多重索引指定要排序的级别
  • ascending:是否按升序排列
  • inplace:是否提供就地排序
  • kind:排序算法,可选 ‘quick’,‘mergesort’,‘heapsort’
  • na_position:缺失值排列顺序,可选‘first’, ‘last’
  • sort_remaining:布尔值,按指定的位置排序,索引保持不变
  • ignore_index:布尔值,是否丢弃排序后的索引标签
返回值

.sort_index()方法返回排序后的数据帧或系列,并且可以直接输出结果,或者通过inplace=True修改源数据的索引和DataFrame。

例子

考虑一下以下的示例数据:

import pandas as pd

data = {"name": ["Tom","Jack","Steve","Ricky","Thomas","Henry","Samuel","Kelly","Benny"],
        "score": [70, 80, np.nan, 75, 83, 91, 67, 84, 77], 
        "age": [25, 30, 26, 22, 32, 20, 23, 34, 29]}

df = pd.DataFrame(data)

df.set_index('name', inplace=True)

print(df)

输出:

        score  age
name             
Tom      70.0   25
Jack     80.0   30
Steve     NaN   26
Ricky    75.0   22
Thomas   83.0   32
Henry    91.0   20
Samuel   67.0   23
Kelly    84.0   34
Benny    77.0   29

现在,你可以使用.sort_index()方法根据索引标签将数据帧按升序排序:

df = df.sort_index()

print(df)

输出:

        score  age
name             
Benny    77.0   29
Henry    91.0   20
Jack     80.0   30
Kelly    84.0   34
Ricky    75.0   22
Samuel   67.0   23
Steve     NaN   26
Thomas   83.0   32
Tom      70.0   25

如果你要根据索引标签将数据帧按降序排序,需要将参数ascending设置为False:

df = df.sort_index(ascending=False)

print(df)

输出:

        score  age
name             
Tom      70.0   25
Thomas   83.0   32
Steve     NaN   26
Samuel   67.0   23
Ricky    75.0   22
Kelly    84.0   34
Jack     80.0   30
Henry    91.0   20
Benny    77.0   29

你也可以根据索引位置将数据帧按升序或降序排序:

df = df.sort_index(axis=1, ascending=False)

print(df)

输出:

        age  score
name             
Tom      25   70.0
Jack     30   80.0
Steve    26    NaN
Ricky    22   75.0
Thomas   32   83.0
Henry    20   91.0
Samuel   23   67.0
Kelly    34   84.0
Benny    29   77.0

另外,如果你不需要排序后的索引,可以将ignore_index设置为True:

df = df.sort_index(ignore_index=True)
print(df)

输出:

   score  age
0   77.0   29
1   91.0   20
2   80.0   30
3   84.0   34
4   75.0   22
5   67.0   23
6    NaN   26
7   83.0   32
8   70.0   25

最后,你可以在原始数据帧上直接使用inplace=True修改数据帧的索引:

df.sort_index(inplace=True)

print(df)

输出:

        score  age
name             
Benny    77.0   29
Henry    91.0   20
Jack     80.0   30
Kelly    84.0   34
Ricky    75.0   22
Samuel   67.0   23
Steve     NaN   26
Thomas   83.0   32
Tom      70.0   25