Python DataFrame排序

Python DataFrame排序

Python DataFrame排序

简介

在数据分析和处理中,经常需要对DataFrame进行排序来整理数据或者得到排名信息。Python的pandas库提供了丰富的方法来对DataFrame进行排序操作。本文将详解DataFrame的排序操作,包括按列排序、按行排序、多列排序以及自定义排序函数等内容。

1. 按列排序

按列排序是将DataFrame中的数据按照某一列或多列的值进行升序或降序排序。在pandas中,可以使用sort_values方法实现按列排序。

1.1 单列排序

下面是一个简单的示例,假设我们有一个DataFrame df,包含”姓名”、”年龄”和”成绩”三列,需要按照”成绩”列进行降序排序。

import pandas as pd

data = {"姓名": ["张三", "李四", "王五", "赵六"],
        "年龄": [20, 18, 19, 21],
        "成绩": [90, 85, 95, 88]}

df = pd.DataFrame(data)
sorted_df = df.sort_values("成绩", ascending=False)
print(sorted_df)

运行结果如下:

  姓名  年龄  成绩
2  王五  19  95
0  张三  20  90
3  赵六  21  88
1  李四  18  85

默认情况下,sort_values方法按照指定列的值进行升序排序,如果需要降序排序,可以设置ascending参数为False。

1.2 多列排序

有时候需要对DataFrame按照多列的值进行排序。可以通过传递一个包含多列名称的列表来实现多列排序。

import pandas as pd

data = {"姓名": ["张三", "李四", "王五", "赵六"],
        "年龄": [20, 18, 19, 21],
        "成绩": [90, 85, 95, 88]}

df = pd.DataFrame(data)
sorted_df = df.sort_values(["成绩", "年龄"], ascending=[False, True])
print(sorted_df)

运行结果如下:

  姓名  年龄  成绩
2  王五  19  95
0  张三  20  90
3  赵六  21  88
1  李四  18  85

通过传递一个包含多列名称的列表,可以实现对多列的排序。在上面的示例中,首先按”成绩”列降序排列,如果”成绩”相同,则按”年龄”列升序排序。

2. 按行排序

除了按列排序,有时候也需要按行排序,将DataFrame的行按照某一列或多列的值进行升序或降序排序。在pandas中,可以使用sort_index方法实现按行排序。

2.1 按指定列排序行

假设我们有一个DataFrame df,包含”姓名”、”年龄”和”成绩”三列,需要按照”年龄”列进行升序排序。

import pandas as pd

data = {"姓名": ["张三", "李四", "王五", "赵六"],
        "年龄": [20, 18, 19, 21],
        "成绩": [90, 85, 95, 88]}

df = pd.DataFrame(data)
sorted_df = df.sort_values("年龄").reset_index(drop=True)
print(sorted_df)

运行结果如下:

  姓名  年龄  成绩
0  李四  18  85
2  王五  19  95
1  张三  20  90
3  赵六  21  88

通过调用sort_values方法可以按照指定的列对DataFrame进行升序排序,然后调用reset_index方法重置索引,得到按行排序的DataFrame。

2.2 按索引排序行

除了按照指定列排序行,也可以直接按照DataFrame的索引进行排序。

import pandas as pd

data = {"姓名": ["张三", "李四", "王五", "赵六"],
        "年龄": [20, 18, 19, 21],
        "成绩": [90, 85, 95, 88]}

df = pd.DataFrame(data)
sorted_df = df.sort_index(ascending=False)
print(sorted_df)

运行结果如下:

  姓名  年龄  成绩
3  赵六  21  88
2  王五  19  95
1  李四  18  85
0  张三  20  90

通过调用sort_index方法,可以按照DataFrame的索引进行升序排序。

3. 自定义排序函数

如果需要自定义排序函数,可以通过key参数传递一个函数给sort_values方法,函数将被应用于排序的列或多列的值。

下面是一个示例,假设我们有一个DataFrame df,包含”姓名”、”年龄”和”成绩”三列,需要按照”姓名”列的长度进行排序。可以定义一个函数name_length,返回字符串长度,然后传递给sort_values方法的key参数。

import pandas as pd

data = {"姓名": ["张三", "李四", "王五", "赵六"],
        "年龄": [20, 18, 19, 21],
        "成绩": [90, 85, 95, 88]}

df = pd.DataFrame(data)

def name_length(name):
    return len(name)

sorted_df = df.sort_values("姓名", key=name_length)
print(sorted_df)

运行结果如下:

  姓名  年龄  成绩
1  李四  18  85
2  王五  19  95
0  张三  20  90
3  赵六  21  88

自定义的排序函数将应用于指定列的每个值,并根据函数返回的结果进行排序。

总结

本文介绍了Python中pandas库的DataFrame排序操作。通过sort_values方法可以实现按列排序,可以按照单列或多列的值进行升序或降序排序。通过sort_index方法可以实现按行排序,可以按照指定列或索引进行升序或降序排序。此外,还介绍了如何自定义排序函数,以满足个性化的排序需求。

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程