Pandas 如何按两个或多个列对数据框进行排序

Pandas 如何按两个或多个列对数据框进行排序

在本文中,我们将介绍如何使用Python中的Pandas库按照两个或多个列对数据框进行排序。排序是对数据进行操作时非常常见的操作,有时需要以某种特定顺序按照多个列进行排序。下面我们将通过详细的示例介绍如何实现这一操作。

阅读更多:Pandas 教程

示例数据

我们将使用Python Pandas数据框来演示列排序。以下是示例数据:

import pandas as pd

# 创建DataFrame
data = {
  'name': ['Tom', 'Jerry', 'Mick', 'Alan', 'Kat'],
  'age': [20, 22, 18, 30, 25],
  'date of birth': ['04/01/1990', '11/05/1997', '07/08/2003', '06/09/1989', '08/10/1996'],
  'salary': [45000, 32000, 28000, 75000, 62000]
}
df = pd.DataFrame(data)

print(df)
Python

输出结果为:

    name  age date of birth  salary
0    Tom   20    04/01/1990   45000
1  Jerry   22    11/05/1997   32000
2   Mick   18    07/08/2003   28000
3   Alan   30    06/09/1989   75000
4    Kat   25    08/10/1996   62000
Python

数据框中有四列数据:name(姓名)、age(年龄)、date of birth(出生日期)和salary(工资)。我们将按照年龄和工资对数据框进行排序。

按单个列排序

在对数据框进行多列排序之前,我们需要了解如何按单个列对数据框进行排序。你可以使用sort_values()方法按照指定的列名对数据框进行排序。以下是一个示例:

# 按照年龄列对数据框进行升序排序
df = df.sort_values('age', ascending=True)

print(df)
Python

输出结果为:

    name  age date of birth  salary
2   Mick   18    07/08/2003   28000
0    Tom   20    04/01/1990   45000
1  Jerry   22    11/05/1997   32000
4    Kat   25    08/10/1996   62000
3   Alan   30    06/09/1989   75000
Python

在上面的示例中,我们将数据框按照年龄列进行升序排序。

按多个列排序

按多个列排序需要添加多个列名到sort_values()方法的参数中。默认情况下,数据框将按第一个列进行排序,如果有相同的元素,则按照第二列继续排序。以下是一个示例:

# 按照年龄列和工资列升序排列
df = df.sort_values(['age', 'salary'], ascending=[True, True])

print(df)
Python

输出结果为:

    name  age date of birth  salary
2   Mick   18    07/08/2003   28000
0    Tom   20    04/01/1990   45000
1  Jerry   22    11/05/1997   32000
4    Kat   25    08/10/1996   62000
3   Alan   30    06/09/1989   75000
Python

在上面的示例中,我们将数据框按照年龄列和工资列进行升序排序。首先按照年龄列排序,如果有年龄相同的元素,则按照工资列继续排序。

按多个列排序的变化

按多个列排序时,改变列的排序方式会产生不同的排序结果。以下是一些示例:

# 按照年龄列降序和工资列升序排列
df = df.sort_values(['age', 'salary'], ascending=[False, True])

print(df)
Python

输出结果为:

    name  age date of birth  salary
3   Alan   30    06/09/1989   75000
4    Kat   25    08/10/1996   62000
1  Jerry   22    11/05/1997   32000
0    Tom   20    04/01/1990   45000
2   Mick   18    07/08/2003   28000
Python

在上面的示例中,我们将数据框按照年龄列降序排序,如果有年龄相同的元素,则按照工资列升序排序。

# 按照年龄列升序和工资列降序排列
df = df.sort_values(['age', 'salary'], ascending=[True, False])

print(df)
Python

输出结果为:

    name  age date of birth  salary
2   Mick   18    07/08/2003   28000
1  Jerry   22    11/05/1997   32000
0    Tom   20    04/01/1990   45000
4    Kat   25    08/10/1996   62000
3   Alan   30    06/09/1989   75000
Python

在上面的示例中,我们将数据框按照年龄列升序排序,如果有年龄相同的元素,则按照工资列降序排序。

总结

按多个列对数据框进行排序是非常常见的数据操作之一。在Python中,Pandas库提供了sort_values()方法来实现数据框的排序操作。在进行多列排序时,需要添加多列列名和对应的排序顺序。本文使用示例演示了如何通过Python Pandas库按多列对数据框进行排序。

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程

登录

注册