熊猫 sort_index() 函数

Pandas 是一个 Python 库,主要用于数据分析。Pandas 使导入、清理、探索、操作和分析数据变得更加容易。在本教程中,我们将了解sort_index()Pandas 中可用的功能。


sort_index() 函数的语法

DataFrame.sort_index(axis=0, level=None, ascending=True, inplace=False, kind='quicksort', na_position='last', sort_remaining=True, ignore_index=False, key=None)
范围 描述 可能的值 默认值
按要排序的轴排序。 0 / ‘索引’,
1 / ‘列’
0
等级 引用数据帧排序的级别。如果不是“无”,则对指定索引级别中的值进行排序。 int 或级别名称或整数列表或级别名称列表 不适用
上升 按升序或降序排序。 布尔值或布尔值列表:“True”、“False” 真的
到位 修改现有数据框或创建新数据框。 布尔值:“真”、“假” 错误的
种类 要应用的排序算法类型。 “快速排序”、“合并排序”、“堆排序”、“稳定” 快速排序
na_位置 放置 NaN 的位置。 ‘第一个’、‘最后一个’ 最后的
剩余排序 指定数据框按指定级别排序后是否要按其他级别排序。 布尔值:“真”、“假” 真的
忽略索引 如果为 True,则生成的轴将标记为 0、1、…、n – 1。 布尔值:“真”、“假” 错误的
钥匙 指定是否要根据某些自定义键对数据框进行排序 用户定义的任何自定义键 不适用

返回:一个排序的对象,即数据帧。如果inplace=True,则原始数据帧本身已排序,否则用户必须指定一个新数据帧来存储结果。如果没有分配新的数据帧并且inplace=False,则返回 None 。

此函数适用于数字和非数字索引值。


创建数据框

在我们跳转到这里的示例之前,让我们首先创建一个数据框。这将帮助我们处理数据框并理解 Python sort_index() 函数的实现。

import pandas as pd
import numpy as np
 
data = {
    'Emp_Name' : ["Anna", "Jeremy", "Dennis", "Courtney",
                            "Bob", "Ronald"],
    'Dept' : ["Operations", "Technology", "Design", "Administration",
                 "Operations", "Technology"],
    'YOE' : [12, 5, 6, 20, 8, 4]
}
 
Emp_Id = [4, 3, 6, 7, 1, 2]
emp_data = pd.DataFrame(data, index=Emp_Id)
emp_data

输出:

排序索引示例的数据框

这是一个用于存储公司员工信息的数据框。它由员工姓名(Emp_Name)、他们工作的部门(Dept)和他们的工作经验年数(YOE)组成。数据根据上述代码中指定的员工 ID (Emp_Id)进行排列。


例子

让我们直接进入示例来了解 sort_index() 函数是如何实现的以及它是如何工作的。

1.按索引升序排序

# by default, axis=0 so sorting is done by row
emp_data2 = emp_data.sort_index()
 
emp_data2

输出:

按升序对索引进行排序

在上面的示例中,我们创建了一个名为“emp_data2”的新数据帧,并根据索引(即“Emp_Id”)按升序对其进行排序结果,我们得到了如图所示的上面的dataframe。


2.按照索引降序排序

# by default, axis=0 so sorting is done by row
emp_data2.sort_index(ascending=False, inplace=True)
 
emp_data2

输出:

按降序对索引进行排序

ascending=False在这里,我们通过在代码中指定按降序对数据帧进行排序。根据指定,inplace=True并且我们没有为该函数分配任何新的数据帧,因此按“就地emp_data2”排序


3. 根据列标签升序排序

# axis=1 implies sort by column
emp_data3 = emp_data.sort_index(axis=1)
 
emp_data3

输出:

按列升序对索引进行排序

在这种情况下,我们有一个名为“emp_data3”的结果数据帧,其中列标签按升序(即字典顺序)排序。列标签 ‘Emp_Name’、’Dept’ 和 ‘YOE’ 的字典顺序‘Dept’、’Emp_Name’ 和 ‘YOE’,因此列现在按此顺序排列。

类似地,我们可以通过编写 来根据列标签按降序emp_data.sort_index(axis=1, ascending=False)对数据帧进行排序。这将产生以下数据框。

按列降序对索引进行排序

4. 使用 na_position 参数定位 NaN

让我们考虑对之前的员工数据框进行稍微修改的版本,如下所示。

import pandas as pd
import numpy as np
 
data = {
    'Emp_Name' : ["Anna", "Jeremy", "Dennis", "Courtney",
                            "Bob", "Ronald"],
    'Dept' : ["Operations", "Technology", "Design", "Administration",
                  "Operations", "Technology"],
    'YOE' : [12, 5, 6, 20, 8, 4]
}
 
Emp_Id = [4, np.nan, 6, np.nan, 1, 2]
emp_df = pd.DataFrame(data, index=Emp_Id)
emp_df
带有 NaN 的数据框

上面的数据帧在索引中有一些 NaN 值,即 Emp_Id。让我们看看如何定位这些值。

A。首先定位 NaN

emp_df2 = emp_df.sort_index(na_position='first')
 
emp_df2

输出:

NaN 值放在第一位

这里,数据帧根据其索引(即 Emp_Id)进行排序,并且 NaN 值首先放置在结果数据帧中。

另请阅读:如何用 0 替换 Pandas 数据框中的 NaN 值?

b. 最后放置 NaN

emp_df3 = emp_df.sort_index(na_position='last')
 
emp_df3

输出:

NaN 值放在最后

在此示例中,数据帧根据其索引(即 Emp_Id)进行排序,并且 NaN 值放置在结果数据帧的最后。


结论

这就是本教程的全部内容!我们已经了解了 Pandas 中的 sort_index() 函数。您可以通过此处的教程了解有关 Pandas 的更多信息。


参考