📜  pandas 按列表排序 - Python (1)

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

Pandas按列表排序 - Python

Pandas是Python编程语言中的一个数据分析库,提供了丰富的数据结构和数据分析工具。其中一个重要的功能是按照某一列或多列的值对数据进行排序。本文将介绍Pandas如何使用列表对数据进行排序。

排序函数

Pandas提供了两个函数进行排序:

  • sort_values(): 按照某一列或多列的值排序。
  • sort_index(): 按照行或列索引进行排序。

这两个函数均支持升序和降序排序,通过参数 ascending 来指定,默认升序(True)。

演示数据

在介绍排序函数之前,先创建一个示例数据集:

import pandas as pd

df = pd.DataFrame({'姓名': ['张三', '李四', '王五', '赵六'],
                   '年龄': [18, 23, 19, 20],
                   '城市': ['北京', '上海', '广州', '深圳'],
                   '成绩': [95, 87, 92, 89]})

运行上述代码可得到一个DataFrame对象,其中包含四列数据。

按单列排序

首先介绍按单列排序的操作。使用 sort_values() 函数对DataFrame对象的某一列进行排序,传入该列的名称或索引即可。例如,按照年龄列进行降序排序:

df.sort_values('年龄', ascending=False)

输出如下:

| 姓名 | 年龄 | 城市 | 成绩 | | --- | --- | --- | --- | | 李四 | 23 | 上海 | 87 | | 赵六 | 20 | 深圳 | 89 | | 王五 | 19 | 广州 | 92 | | 张三 | 18 | 北京 | 95 |

可以看到,按照年龄列进行了降序排序。

按多列排序

当需要按照多列进行排序时,只需传入一个包含多个列名的列表即可。例如,按照城市列进行升序排序,城市相同的再按照成绩列进行降序排序:

df.sort_values(['城市', '成绩'], ascending=[True, False])

输出如下:

| 姓名 | 年龄 | 城市 | 成绩 | | --- | --- | --- | --- | | 张三 | 18 | 北京 | 95 | | 李四 | 23 | 上海 | 87 | | 王五 | 19 | 广州 | 92 | | 赵六 | 20 | 深圳 | 89 |

可以看到,首先按照城市进行升序排序,当城市相同时再按照成绩进行降序排序。

按索引排序

除了按照列进行排序,还可以按照行或列的索引进行排序。使用 sort_index() 函数,传入 axis 参数指定按行排序(axis=0)还是按列排序(axis=1),使用 ascending 参数指定升序还是降序排序。

例如,按照索引从大到小排序:

df.sort_index(ascending=False)

输出如下:

| 姓名 | 年龄 | 城市 | 成绩 | | --- | --- | --- | --- | | 赵六 | 20 | 深圳 | 89 | | 王五 | 19 | 广州 | 92 | | 李四 | 23 | 上海 | 87 | | 张三 | 18 | 北京 | 95 |

可以看到,按照索引从大到小排序。

结论

本文介绍了Pandas中的两个排序函数 sort_values()sort_index() 。通过本文,您已经了解了如何使用这些函数对数据进行排序。在实际应用中,排序操作往往是数据预处理中的一步,非常常见和重要。