📅  最后修改于: 2023-12-03 14:54:39.452000             🧑  作者: Mango
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 进行排序了。这能够为你在数据清洗和分析时提供便利。