如何对DataFrame中的数据进行排序?

使用 sort_index 方法可以对 DataFrame 按行索引进行排序,该方法默认是升序排序,不过可以通过 ascending 参数指定排序顺序。
import pandas as pd

# 创建一个示例 DataFrame
data = {
    'A': [3, 1, 2],
    'B': [6, 4, 5]
}
index = ['c', 'a', 'b']
df = pd.DataFrame(data, index=index)

# 按行索引升序排序
sorted_df_asc = df.sort_index()
print("按行索引升序排序:")
print(sorted_df_asc)

# 按行索引降序排序
sorted_df_desc = df.sort_index(ascending=False)
print("\n按行索引降序排序:")
print(sorted_df_desc)

2. 按列索引排序

同样使用 sort_index 方法,通过设置 axis=1 可以对 DataFrame 按列索引进行排序。

# 按列索引升序排序
sorted_columns_asc = df.sort_index(axis=1)
print("按列索引升序排序:")
print(sorted_columns_asc)

# 按列索引降序排序
sorted_columns_desc = df.sort_index(axis=1, ascending=False)
print("\n按列索引降序排序:")
print(sorted_columns_desc)

3. 按列中的值排序


使用 sort_values 方法可以根据 DataFrame 中某一列或多列的值进行排序。

按单列值排序

# 按列 'A' 的值升序排序
sorted_by_A_asc = df.sort_values(by='A')
print("按列 'A' 的值升序排序:")
print(sorted_by_A_asc)

# 按列 'A' 的值降序排序
sorted_by_A_desc = df.sort_values(by='A', ascending=False)
print("\n按列 'A' 的值降序排序:")
print(sorted_by_A_desc)

按多列值排序

当按多列值排序时,会先按第一列排序,如果第一列的值相同,再按第二列排序,以此类推。
# 按列 'A' 升序,列 'B' 降序排序
sorted_by_A_B = df.sort_values(by=['A', 'B'], ascending=[True, False])
print("按列 'A' 升序,列 'B' 降序排序:")
print(sorted_by_A_B)

4. 处理缺失值

在排序时,缺失值(NaN)默认会被放到最后,但可以通过 na_position 参数来控制其位置。

import numpy as np

# 创建包含缺失值的 DataFrame
data_with_nan = {
    'A': [3, np.nan, 1],
    'B': [6, 4, 5]
}
df_with_nan = pd.DataFrame(data_with_nan)

# 按列 'A' 排序,将缺失值放在前面
sorted_with_nan_front = df_with_nan.sort_values(by='A', na_position='first')
print("按列 'A' 排序,缺失值放前面:")
print(sorted_with_nan_front)

综上所述,Pandas 提供了灵活的排序方法,可以根据不同的需求对 DataFrame 进行排序。

posted on 2025-04-17 22:28  数据库那些事儿  阅读(322)  评论(0)    收藏  举报