pandas数值排序的实现实例
本文详细介绍pandas中sort_values()方法的使用,涵盖单列与多列数值排序、升序与降序设置,以及缺失值(NaN)位置的灵活控制。通过具体代码示例和结果展示,帮助开发者掌握数据清洗与排序的核心技巧。
本文所使用的示例表格数据如下:

在开始排序操作前,我们先查看原始数据的状态:
import pandas as pd
df = pd.read_excel(r'C:\Users\admin\Desktop\测试.xlsx')
print(df)
result: 姓名 年龄 成绩 0 小明 23.0 78 1 小刚 NaN 89 2 小红 876.0 65 3 李华 65.0 89 4 小美 NaN 43 5 张三 34.0 90 6 李四 NaN 34 7 王五 98.5 87
1.按照一列数值进行排序
对单列数值进行排序时,整个数据表将依据指定列的值进行升序或降序排列。实现这一功能需调用sort_values()方法,并通过by参数指定目标列名,同时利用ascending参数设定排序方向(升序或降序)。
1.1按照五缺失值的一列进行排序
1.1.1升序排列
该方法默认执行升序排列(即ascending参数默认为True),只需通过by参数指定需要排序的列名即可。
df = pd.read_excel(r'C:\Users\admin\Desktop\测试.xlsx')
print(df.sort_values(by=["成绩"]))
result: 姓名 年龄 成绩 6 李四 NaN 34 4 小美 NaN 43 2 小红 876.0 65 0 小明 23.0 78 7 王五 98.5 87 1 小刚 NaN 89 3 李华 65.0 89 5 张三 34.0 90
1.1.2 降序排列
只需将ascending参数的值设置为False,即可实现降序排列。
df = pd.read_excel(r'C:\Users\admin\Desktop\测试.xlsx')
print(df.sort_values(by=["成绩"], ascending=False))
result: 姓名 年龄 成绩 5 张三 34.0 90 1 小刚 NaN 89 3 李华 65.0 89 7 王五 98.5 87 0 小明 23.0 78 2 小红 876.0 65 4 小美 NaN 43 6 李四 NaN 34
1.2按照有缺失值的一列进行排序
当待排序的列中包含缺失值时,可以通过设置na_position参数来指定缺失值在排序结果中的显示位置。
1.2.1 缺失值显示在最后
该方法默认将缺失值显示在末尾(即na_position参数的默认值为last)。
df = pd.read_excel(r'C:\Users\admin\Desktop\测试.xlsx')
print(df.sort_values(by=["成绩"]))
df = pd.read_excel(r'C:\Users\admin\Desktop\测试.xlsx')
print(df.sort_values(by=["年龄"]))
result: 姓名 年龄 成绩 0 小明 23.0 78 5 张三 34.0 90 3 李华 65.0 89 7 王五 98.5 87 2 小红 876.0 65 1 小刚 NaN 89 4 小美 NaN 43 6 李四 NaN 34
1.2.2 缺失值显示在最前面
只需将na_position参数的值设置为first,即可使缺失值显示在排序结果的最前面。
df = pd.read_excel(r'C:\Users\admin\Desktop\测试.xlsx')
print(df.sort_values(by=["年龄"], na_position='first'))
result: 姓名 年龄 成绩 1 小刚 NaN 89 4 小美 NaN 43 6 李四 NaN 34 0 小明 23.0 78 5 张三 34.0 90 3 李华 65.0 89 7 王五 98.5 87 2 小红 876.0 65
2.按照多列数值进行排序
多列数值排序是指同时依据多个列的数据进行升序或降序排列。当第一列出现重复值时,系统会自动依据第二列进行排序;若第二列仍有重复,则继续依据第三列排序,以此类推。此时,在sort_values()方法中,需将多个列名以列表形式传递给by参数,并将每个列名对应的排序方式也以列表形式传递给ascending参数,确保两个列表中的元素一一对应。
df = pd.read_excel(r'C:\Users\admin\Desktop\测试.xlsx')
print(df.sort_values(by=["成绩", "年龄"], ascending=[True, False]))
result: 姓名 年龄 成绩 6 李四 NaN 34 4 小美 NaN 43 2 小红 876.0 65 0 小明 23.0 78 7 王五 98.5 87 3 李华 65.0 89 1 小刚 NaN 89 5 张三 34.0 90
上述示例中,首先按照成绩进行升序排列,当成绩相同时,再按照年龄进行降序排列。
到此这篇关于pandas数值排序的实现实例的文章就介绍到这了,更多相关pandas数值排序内容请搜索本站以前的文章或继续浏览下面的相关文章希望大家以后多多支持本站!
本站声明
本文内容仅供参考,不代表本站观点。转载或引用请注明出处。如发现内容问题,请通过联系我们页面反馈。













