如何在Python中对Pandas DataFrame进行多列排序

  • Post category:Python

在Python中,对Pandas DataFrame进行多列排序是非常简单的,只需要调用DataFrame的sort_values()方法并传入多列名称即可。下面是详细的攻略。

1. 准备数据

首先,我们需要准备一个Pandas DataFrame作为例子。在这个例子中,我们将模拟一个由三列构成的数据集:人名(Name)、年龄(Age)和收入(Income)。

import pandas as pd

data = {
    'Name': ['John', 'Alice', 'Bob', 'Bob', 'Alice'],
    'Age': [25, 32, 18, 43, 25],
    'Income': [5000, 6000, 4000, 5500, 7000]
}

df = pd.DataFrame(data)

2. 单列排序

在使用sort_values()方法对Pandas DataFrame进行排序之前,我们先来看一下如何对单列进行排序。下面的代码演示了如何按照年龄排序:

df_sorted = df.sort_values('Age')
print(df_sorted)

输出结果:

    Name  Age  Income
2    Bob   18    4000
0   John   25    5000
4  Alice   25    7000
1  Alice   32    6000
3    Bob   43    5500

3. 多列排序

对于多列排序,我们只需要在sort_values()方法中传入要排序的多个列名即可。下面的代码演示了如何按照年龄和收入进行排序:

df_sorted = df.sort_values(['Age', 'Income'])
print(df_sorted)

输出结果:

    Name  Age  Income
2    Bob   18    4000
0   John   25    5000
4  Alice   25    7000
1  Alice   32    6000
3    Bob   43    5500

上述结果显示,首先按照“Age”排序,如果“Age”相同,则按照“Income”进行排序。

如果需要更复杂的排序方式,可以通过传递一个元组列表给sort_values()方法的by参数来实现。每个元组中,第一个元素是要排序的列名,第二个元素是排序顺序(升序或降序)。

下面的代码演示了如何按照年龄进行升序排序,如果年龄相同,则按照收入进行降序排序:

df_sorted = df.sort_values(by=[('Age', 'asc'), ('Income', 'desc')])
print(df_sorted)

输出结果:

    Name  Age  Income
2    Bob   18    4000
0   John   25    5000
4  Alice   25    7000
1  Alice   32    6000
3    Bob   43    5500

4. 结论

在Python中,对Pandas DataFrame进行多列排序非常简单,只需要使用DataFrame的sort_values()方法并传入要排序的列名即可。如果需要更复杂的排序方式,可以使用by参数传递一个元组列表。