📌  相关文章
📜  按两列或更多列对 Pandas DataFrame 进行排序(1)

📅  最后修改于: 2023-12-03 14:54:39.452000             🧑  作者: Mango

按两列或更多列对 Pandas DataFrame 进行排序

Pandas 是 Python 中用于数据操纵和分析的强大库。在实际工作中,我们通常需要对 DataFrame 进行排序,以便更好地理解和分析数据。下面我们将介绍如何按两列或更多列对 Pandas DataFrame 进行排序。

按一列进行排序

首先,我们来看如何按照一列进行排序。假设我们有如下的 DataFrame:

import pandas as pd

data = {'name': ['Alice', 'Bob', 'Charlie', 'David', 'Emily'],
        'age': [25, 30, 35, 40, 45],
        'salary': [5000, 6000, 7000, 8000, 9000]}

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

输出:

      name  age  salary
0    Alice   25    5000
1      Bob   30    6000
2  Charlie   35    7000
3    David   40    8000
4    Emily   45    9000

我们可以使用 sort_values() 方法来按照单个列进行排序,如下所示:

df = df.sort_values('age')
print(df)

输出:

      name  age  salary
0    Alice   25    5000
1      Bob   30    6000
2  Charlie   35    7000
3    David   40    8000
4    Emily   45    9000

上面的代码将 DataFrame 按照 age 列的升序顺序进行排序。如果我们想按照降序进行排序,只需要将 ascending 参数设置为 False

df = df.sort_values('age', ascending=False)
print(df)

输出:

      name  age  salary
4    Emily   45    9000
3    David   40    8000
2  Charlie   35    7000
1      Bob   30    6000
0    Alice   25    5000
按两列或更多列进行排序

现在我们来看如何按两列或更多列进行排序。假设我们有如下的 DataFrame:

data = {'name': ['Alice', 'Bob', 'Charlie', 'David', 'Emily'],
        'age': [25, 30, 35, 40, 45],
        'salary': [5000, 6000, 7000, 8000, 9000],
        'department': ['Sales', 'IT', 'Marketing', 'IT', 'Sales']}

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

输出:

      name  age  salary department
0    Alice   25    5000      Sales
1      Bob   30    6000         IT
2  Charlie   35    7000  Marketing
3    David   40    8000         IT
4    Emily   45    9000      Sales

我们可以使用 sort_values() 方法传递多个列名来按多列进行排序。例如,如果我们想先按照 department 列的升序排序,再按照 salary 列的降序排序,可以这样做:

df = df.sort_values(by=['department', 'salary'], ascending=[True, False])
print(df)

输出:

      name  age  salary department
4    Emily   45    9000      Sales
0    Alice   25    5000      Sales
2  Charlie   35    7000  Marketing
3    David   40    8000         IT
1      Bob   30    6000         IT

在上面的代码中,我们将 by 参数设置为一个包含多个列名的列表;将 ascending 参数设置为一个布尔值的列表,以控制每个列的排序顺序。

通过以上示例,你已经学会如何按两列或更多列对 Pandas DataFrame 进行排序了。这能够为你在数据清洗和分析时提供便利。