pandas 排序 按指定顺序

pandas 排序 按指定顺序

pandas 排序 按指定顺序

在数据分析中,经常需要对数据进行排序操作,以便更好地理解数据的特点或者进行进一步分析。pandas 是一个强大的数据分析工具,提供了丰富的排序功能。本文将重点介绍如何使用 pandas 按照自定义的顺序进行排序。

按指定顺序排序

pandas 中,可以通过 sort_values 方法来对数据进行排序。默认情况下,sort_values 方法会按照数值大小进行排序,如果要按照自定义的顺序进行排序,可以通过 key 参数传入一个函数来实现。

假设有一个数据集如下:

import pandas as pd

data = {
    'name': ['Alice', 'Bob', 'Cathy', 'David', 'Eve'],
    'score': [85, 90, 75, 80, 95]
}

df = pd.DataFrame(data)
print(df)

输出为:

    name  score
0  Alice     85
1    Bob     90
2  Cathy     75
3  David     80
4    Eve     95

如果我们想按照自定义顺序 Eve, Bob, Alice, Cathy, Davidname 列进行排序,可以这样实现:

custom_order = ['Eve', 'Bob', 'Alice', 'Cathy', 'David']

def custom_sort(x):
    return custom_order.index(x)

df_sorted = df.sort_values(by='name', key=lambda x: x.map(custom_sort))
print(df_sorted)

输出为:

    name  score
4    Eve     95
1    Bob     90
0  Alice     85
2  Cathy     75
3  David     80

通过上述代码,我们成功按照自定义的顺序对 name 列进行了排序。

指定升序或降序排序

除了按照自定义顺序排序之外,pandas 还支持对数据进行升序或降序排序。可以通过 ascending 参数来指定排序的顺序,True 表示升序,False 表示降序。

以前面的数据集为例,我们可以按照 score 列进行降序排序:

df_sorted = df.sort_values(by='score', ascending=False)
print(df_sorted)

输出为:

    name  score
4    Eve     95
1    Bob     90
0  Alice     85
3  David     80
2  Cathy     75

通过设置 ascending=False,我们实现了对 score 列的降序排序。

多列按指定顺序排序

有时候需要对多列数据按照指定顺序进行排序。可以通过传入一个列表来指定多个列名,在 key 函数中对多个列进行排序。

假设有一个数据集如下:

data = {
    'name': ['Alice', 'Bob', 'Cathy', 'David', 'Eve'],
    'group': ['A', 'B', 'B', 'A', 'C'],
    'score': [85, 90, 75, 80, 95]
}

df = pd.DataFrame(data)
print(df)

输出为:

    name group  score
0  Alice     A     85
1    Bob     B     90
2  Cathy     B     75
3  David     A     80
4    Eve     C     95

如果我们想先按照 group 列的自定义顺序 C, B, A 进行排序,再按照 score 列进行降序排序,可以这样实现:

group_order = ['C', 'B', 'A']

def custom_sort_group(x):
    return group_order.index(x)

df_sorted = df.sort_values(by=['group', 'score'], key=lambda x: x.map(custom_sort_group))
print(df_sorted)

输出为:

    name group  score
4    Eve     C     95
1    Bob     B     90
2  Cathy     B     75
3  David     A     80
0  Alice     A     85

通过上述代码,我们先按照 group 列的自定义顺序进行排序,再按照 score 列进行降序排序。

总结

本文介绍了在 pandas 中按照指定顺序进行排序的方法,包括通过 key 函数对单列数据排序、指定升序或降序、多列按指定顺序排序等内容。掌握这些排序技巧能够让我们更灵活地处理数据,更高效地进行数据分析。

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程