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。