详解pandas.DataFrame.sort_index()(按索引排序)函数使用方法

  • Post category:Python

pandas.DataFrame.sort_index()是Pandas库中用于按照行或列索引排序数据帧的函数。

作用:

该函数可以对数据帧的行索引或列索引进行排序,支持升序或降序排列,并且可以指定是否就地修改原始数据帧。

使用方法:

DataFrame.sort_index(axis=0, level=None, ascending=True, inplace=False, kind='quicksort', na_position='last', sort_remaining=True, ignore_index=False, key=None)

该函数可以接受多个参数,下面是一些常用参数:

  • axis: 要排序的轴,0表示按行索引排序,1表示按列索引排序;
  • ascending: 是否按升序排序,默认为True;
  • inplace: 是否就地修改原始数据帧,默认为False;
  • level: 多重索引的层级,用于按多级索引排序;
  • sort_remaining: 当设置为布尔型时,以在稳定排序中启用多个排序算法;耗时更长但默认效果更好(False),而 True 将调用全局稳定排序,这与按名称排序相同。

示例一:

在下方创建了一个简单的数据框,它表示了学生们的成绩单,其中每行表示一个学生的姓名、语数外三科的成绩及平均分:

import pandas as pd

data = {"姓名": ["小明", "小红", "小刚"], 
        "语文": [65, 90, 78], 
        "数学": [80, 88, 90], 
        "英语": [90, 89, 95], 
        "平均分": [78.33, 89, 87.67]
       }

df = pd.DataFrame(data)
df = df.set_index("姓名")

现在,我们要按照学生姓名的字母顺序对数据帧进行排序,这时我们可以使用以下代码:

df1 = df.sort_index()

以上代码设置axis参数为0,表示按行索引排序,ascending参数为True,表示升序排序。因为按照学生的姓名来索引,所以我们没有指定level参数。

最终,我们通过print(df1)输出新的排序后的数据帧df1。

示例二:

现在,我们要进一步按照科目成绩对数据帧进行排序,先按照数学成绩,再按照英语成绩进行降序排序。

df2 = df.sort_index(axis=1, ascending=[True, False], level=[0, 1])

以上代码设置axis参数为1,表示按列索引排序。我们通过ascending参数表示每列用升序(True)或降序(False),即[True, False, False, True]表示第1列按升序排列,第2-3列按降序排列。我们通过level指定了分别按照第0级和第1级行/列索引进行排序。

最终,我们通过print(df2)输出新的排序后的数据帧df2。