对 DataFrame 或 Series 按照指定列的值进行升序或降序排列。

一、基本语法

DataFrame.sort_values(
    by,           # 指定排序的列名(或列名列表,多列排序)
    ascending=True,  # 是否升序:True(默认,升序)、False(降序)
    inplace=False,   # 是否原地修改:True(不返回新对象)、False(返回新对象,默认)
    ignore_index=False  # 排序后是否重置索引:True(索引从0开始)、False(保留原索引,默认)
)

二、常用示例

假设我们有如下 DataFrame:

data = {
    'name': ['Alice', 'Bob', 'Charlie', 'David'],
    'age': [25, 20, 30, 20],
    'score': [85, 90, 75, 90]
}
df = pd.DataFrame(data)
nameagescore
0Alice2585
1Bob2090
2Charlie3075
3David2090
1. 按单列排序(默认升序)

按 age 列升序排列(从小到大):

# 按 age 升序
df_sorted = df.sort_values(by='age')
print(df_sorted)
      name  age  score
1      Bob   20     90
3    David   20     90
0    Alice   25     85
2  Charlie   30     75
2. 按单列降序排序

按 score 列降序排列(从大到小):

# 按 score 降序
df_sorted = df.sort_values(by='score', ascending=False)
print(df_sorted)
      name  age  score
1      Bob   20     90
3    David   20     90
0    Alice   25     85
2  Charlie   30     75
3. 按多列排序

先按 age 升序,age 相同则按 score 降序:

# 多列排序:先按 age 升序,再按 score 降序
df_sorted = df.sort_values(by=['age', 'score'], ascending=[True, False])
print(df_sorted)
      name  age  score
1      Bob   20     90
3    David   20     90  # age相同,score也相同,顺序不变
0    Alice   25     85
2  Charlie   30     75
4. 排序后重置索引(常用)

排序后默认保留原索引,用 ignore_index=True 重置为连续索引:

df_sorted = df.sort_values(by='age', ignore_index=True)
print(df_sorted)
      name  age  score
0      Bob   20     90  # 新索引从0开始
1    David   20     90
2    Alice   25     85
3  Charlie   30     75
5. 原地修改 DataFrame(inplace=True )

用 inplace=True 直接修改原 DataFrame(不返回新对象):

df.sort_values(by='age', inplace=True)
print(df)  # 原 df 已被修改

三、关键参数说明

  • by:核心参数,指定排序的列名(单列用字符串,多列用列表)
  • ascending控制排序方向,默认 True(升序);多列排序时可传入布尔值列表(与 by 中的列一一对应)。
  • ignore_index排序后索引可能混乱,设为 True 可重置为 0,1,2...,方便后续按位置访问。
  • inplace默认 False(返回新对象,不修改原数据),建议保持默认,避免意外修改原始数据。

总结

        按列排序的核心是 sort_values(by=列名),通过调整 ascending 控制升降序,多列排序时传入列名列表即可。

Logo

昇腾计算产业是基于昇腾系列(HUAWEI Ascend)处理器和基础软件构建的全栈 AI计算基础设施、行业应用及服务,https://devpress.csdn.net/organization/setting/general/146749包括昇腾系列处理器、系列硬件、CANN、AI计算框架、应用使能、开发工具链、管理运维工具、行业应用及服务等全产业链

更多推荐