Python使用Pandas进行Excel风格多列排序详解

今天早睡
今天早睡
发布时间:2026-10-13| 5人浏览过
原创

本文详细介绍如何利用Python的Pandas库实现类似Excel的强大排序功能。通过df.sort_values()方法,演示如何对单列或多列数据进行升序或降序排列,并深入讲解当存在相同值时如何处理索引排序,以及如何通过列表参数实现不同列混合排序(如身高降序、武力升序)。

Python Pandas多列排序实现详解

Excel内置的数值排序功能十分强大,支持升序、降序以及自定义排序,能够同时对多个字段进行复杂的排序操作。

在Python中是否具备同样强大的排序能力?答案是肯定的,而且从功能角度看,Python的排序能力并不逊色于Excel。

我们继续借助强大的第三方库pandas来实现这一功能。首先,需要导入numpy和pandas库:

接下来,构建今天示例所需的DataFrame对象,这里采用字典形式进行构造。

数据内容为随意构造,仅供演示,无需纠结具体数值的合理性。我们先进行一个简单的热身练习:按照身高字段进行降序排列。

这里使用df.sort_values()函数。第一个参数by用于指定排序的列标签名;后续参数ascending用于指定排序顺序,True表示升序,False表示降序。当遇到相同身高时,pandas会自动比较对应行的index,并按index的升序进行排列。

假设存在这样一个需求:首先按身高降序排序,若身高相同,则进一步按武力值降序排序,这可以实现吗?

完全可以实现。只需在by参数中传入包含列标签名的列表即可。

通过上述示例可以看出,by参数不仅接受单个字符串,还可以接受字符串列表,从而实现对多个列的同时排序。

接着,提出更高的要求:身高仍需降序,但武力值需要升序,这能做到吗?

直接查看运行结果:

与by参数类似,我们只需在ascending参数中传入布尔值列表即可。这明确了告诉pandas各列所需的排序方式,与指定单个布尔值的ascending参数用法一致。需要注意的是,这两个参数中列表的元素个数必须保持一致,否则程序会报错,因为无法建立一一对应关系。

关于sort_values这一强大的排序函数介绍至此。除了上述参数外,该函数还包含inplace、kind和na_position等参数,以应对更复杂的排序需求。建议参考官方文档深入学习。

以上就是本文的全部内容,希望对各位的学习有所帮助,也欢迎大家多多支持本站。

免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。

Python 相关产品和应用

全部下载
Selenium

Selenium

4.51.0 · Windows

用于浏览器自动化和 Web 测试的 Python 工具。

scikit-learn

scikit-learn

1.9.1 · Windows

常用 Python 机器学习算法与模型评估工具库。

Black

Black

26.10.1 · Windows

强调一致性的 Python 自动代码格式化工具。

Ruff

Ruff

0.17.1 · macOS

由 Rust 编写的高速 Python 代码检查和格式化工具。

pytest

pytest

9.1.1 · Windows

简洁而强大的 Python 自动化测试框架。

FastAPI

FastAPI

0.146.0 · Windows

高性能 Python API 框架,支持类型提示和自动接口文档。

Flask

Flask

3.1.3 · Windows

轻量灵活的 Python Web 应用框架。

Django

Django

6.1.2 · Windows

成熟的 Python Web 框架,适合构建内容站点和业务系统。

Spyder

Spyder

6.1.7 · Windows

面向科学计算与数据分析的 Python 集成开发环境。

SciPy

SciPy

1.18.1 · Windows

面向科学、工程和技术计算的 Python 算法库。