ZetCode

Pandas 排序值

最后修改时间:2025年3月1日

Pandas 是一个强大的 Python 数据处理库。在处理 DataFrame 和 Series 时,排序是一项常见操作。本教程将通过实际示例介绍如何使用 Pandas 对 DataFrame 和 Series 进行排序。

排序有助于组织数据以获得更好的分析效果。Pandas 提供了 sort_values()sort_index() 等方法来进行数据排序。这些方法非常灵活,允许按列或索引进行排序。

按多列排序

此示例显示了如何按多个列对 DataFrame 进行排序。

sort_multiple_columns.py
import pandas as pd

# Load data from CSV
df = pd.read_csv('products.csv')

# Sort by 'category' (ascending) and 'unit_price' (descending)
sorted_df = df.sort_values(by=['category', 'unit_price'], ascending=[True, False])

print(sorted_df.head())

sort_values() 方法按“category”列升序和“unit_price”列降序对 DataFrame 进行排序。这对于层次化排序非常有用。

按自定义顺序排序

此示例演示了如何使用特定列的自定义顺序对 DataFrame 进行排序。

sort_custom_order.py
import pandas as pd

# Load data from CSV
df = pd.read_csv('products.csv')

# Define custom order for 'category'
custom_order = ['Beverages', 'Condiments', 'Dairy Products', 'Seafood', 'Meat/Poultry', 'Produce', 'Confections', 'Grains/Cereals']

# Convert 'category' to a categorical type with custom order
df['category'] = pd.Categorical(df['category'], categories=custom_order, ordered=True)

# Sort by 'category'
sorted_df = df.sort_values(by='category')

print(sorted_df.head())

pd.Categorical() 函数用于定义“category”列的自定义顺序。然后根据此自定义顺序对 DataFrame 进行排序。

按列值对 DataFrame 进行排序

此示例显示了如何按一个或多个列对 DataFrame 进行排序。

sort_by_column.py
import pandas as pd

data = {
    'Name': ['Alice', 'Bob', 'Charlie', 'David'],
    'Age': [25, 30, 35, 20],
    'Salary': [50000, 60000, 70000, 40000]
}

df = pd.DataFrame(data)
sorted_df = df.sort_values(by='Age')

print(sorted_df)

sort_values() 方法按“Age”列对 DataFrame 进行排序。默认情况下,排序是升序的。您可以通过将列表传递给 by 参数来按多个列进行排序。

降序排序

此示例演示了如何按降序对数据进行排序。

sort_descending.py
import pandas as pd

data = {
    'Name': ['Alice', 'Bob', 'Charlie', 'David'],
    'Age': [25, 30, 35, 20],
    'Salary': [50000, 60000, 70000, 40000]
}

df = pd.DataFrame(data)
sorted_df = df.sort_values(by='Age', ascending=False)

print(sorted_df)

ascending=False 参数按降序对 DataFrame 进行排序。当您希望最高值在前时,这很有用。

按索引排序

此示例显示了如何按索引对 DataFrame 进行排序。

sort_by_index.py
import pandas as pd

data = {
    'Name': ['Alice', 'Bob', 'Charlie', 'David'],
    'Age': [25, 30, 35, 20],
    'Salary': [50000, 60000, 70000, 40000]
}

df = pd.DataFrame(data)
sorted_df = df.sort_index(ascending=False)

print(sorted_df)

sort_index() 方法按索引对 DataFrame 进行排序。将 ascending=False 设置为按降序排序索引。

排序 Series

此示例演示了如何对 Pandas Series 进行排序。

sort_series.py
import pandas as pd

s = pd.Series([25, 30, 35, 20], index=['Alice', 'Bob', 'Charlie', 'David'])
sorted_s = s.sort_values()

print(sorted_s)

sort_values() 方法按值对 Series 进行排序。您也可以使用 sort_index() 按索引排序。

带有缺失值的排序

此示例显示了如何处理排序时的缺失值。

sort_with_nan.py
import pandas as pd
import numpy as np

data = {
    'Name': ['Alice', 'Bob', 'Charlie', 'David'],
    'Age': [25, np.nan, 35, 20],
    'Salary': [50000, 60000, 70000, 40000]
}

df = pd.DataFrame(data)
sorted_df = df.sort_values(by='Age', na_position='first')

print(sorted_df)

na_position='first' 参数将缺失值放在开头。使用 na_position='last' 将它们放在末尾。

Pandas 排序最佳实践

来源

Pandas sort_values 文档

在本文中,我们探讨了如何在 Pandas 中对 DataFrame 和 Series 进行排序。

作者

我的名字是 Jan Bodnar,我是一位充满热情的程序员,拥有丰富的编程经验。我自 2007 年以来一直撰写编程文章。迄今为止,我已撰写了 1,400 多篇文章和 8 本电子书。我在编程教学方面拥有十多年的经验。

所有 Pandas 教程列表。