对 Pandas 数据框架的行进行排序可以使用 sort_values()
函数。以下是对该函数的详细说明:
sort_values函数的基本语法
DataFrame.sort_values(
by,
axis=0,
ascending=True,
inplace=False,
kind='quicksort',
na_position='last',
ignore_index=False,
key=None)
sort_values函数的参数说明
by
:按照某一列或多列排序。可以是列名称(字符串类型),也可以是列表或 Series、DataFrame。axis
:指定排序的轴,默认为 0,即按照行进行排序,如果设置为 1,则按照列进行排序。ascending
:排序方式,默认为升序,即 True 表示升序排序,False 表示降序排序。inplace
:是否原地修改数据,默认为 False,表示不修改原数据,返回新的数据。如果为 True,表示将修改后的结果保存到原数据上,并返回 None。kind
:排序算法,默认为 quicksort,还可以使用 mergesort 或 heapsort。na_position
:缺失值在排序中的位置,默认为 last,表示在排序后将缺失值移动到末尾,也可以选择 first,表示将缺失值移动到最前面。ignore_index
:是否忽略掉原有索引,默认为 False,表示保留原有索引。
sort_values函数的使用示例
我们可以使用以下的数据集作为示例:
import pandas as pd
# 创建一个DataFrame
df = pd.DataFrame({
'Name': ['Alice', 'Bob', 'Cathy', 'David', 'Eva', 'Frank'],
'Age': [26, 27, 25, 29, 32, 24],
'Gender': ['Female', 'Male', 'Female', 'Male', 'Female', 'Male'],
'Salary': [4000.0, 3500.0, 4300.0, 4600.0, 5000.0, 3000.0]
})
# 打印DataFrame
print(df)
输出结果如下:
Name Age Gender Salary
0 Alice 26 Female 4000.0
1 Bob 27 Male 3500.0
2 Cathy 25 Female 4300.0
3 David 29 Male 4600.0
4 Eva 32 Female 5000.0
5 Frank 24 Male 3000.0
按照一列进行升序排序
我们可以按照 Salary
这一列进行升序排序:
# 按照Salary这一列进行升序排序
df.sort_values(by=['Salary'], ascending=True, inplace=True)
# 打印排序后的数据
print(df)
输出结果如下:
Name Age Gender Salary
5 Frank 24 Male 3000.0
1 Bob 27 Male 3500.0
0 Alice 26 Female 4000.0
2 Cathy 25 Female 4300.0
3 David 29 Male 4600.0
4 Eva 32 Female 5000.0
按照多列进行排序
我们可以按照 Salary
和 Age
这两列进行排序,先按照 Salary
进行升序排序,再按照 Age
进行升序排序:
# 按照Salary和Age这两列进行排序
df.sort_values(by=['Salary', 'Age'], ascending=[True, True], inplace=True)
# 打印排序后的数据
print(df)
输出结果如下:
Name Age Gender Salary
5 Frank 24 Male 3000.0
1 Bob 27 Male 3500.0
0 Alice 26 Female 4000.0
2 Cathy 25 Female 4300.0
3 David 29 Male 4600.0
4 Eva 32 Female 5000.0
按照多列进行排序,并忽略原有索引
我们可以按照 Salary
和 Age
这两列进行排序,先按照 Salary
进行升序排序,再按照 Age
进行升序排序,并忽略原有索引:
# 按照Salary和Age这两列进行排序,并忽略原有索引
df = df.sort_values(by=['Salary', 'Age'], ascending=[True, True], ignore_index=True)
# 打印排序后的数据
print(df)
输出结果如下:
Name Age Gender Salary
0 Frank 24 Male 3000.0
1 Bob 27 Male 3500.0
2 Alice 26 Female 4000.0
3 Cathy 25 Female 4300.0
4 David 29 Male 4600.0
5 Eva 32 Female 5000.0