如何对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 进行排序。
浙公网安备 33010602011771号