Pandas DataFrame 提供强大的数据操作工具,排序是其中一项基本操作。本文探讨如何高效地根据单个列对 DataFrame 进行排序,重点介绍关键的sort_values()
方法及其关键参数:ascending
和na_position
。
目录
使用ascending
控制排序顺序
sort_values()
方法可以直接控制排序方向。ascending
参数(默认为True
,升序)决定是升序还是降序排序。
import pandas as pd
data = {'Name': ['Alice', 'Bob', 'Charlie', 'David'],
'Age': [25, 30, 22, 28],
'Score': [85, 92, 78, 88]}
df = pd.DataFrame(data)
# 按'Age'升序排序
df_ascending = df.sort_values(by='Age')
print("升序:n", df_ascending)
# 按'Age'降序排序
df_descending = df.sort_values(by='Age', ascending=False)
print("n降序:n", df_descending)
使用na_position
处理缺失值
在处理包含缺失值(NaN)的数据集时,na_position
参数控制这些值在排序列中的位置。它接受两个值:
'first'
(默认):将 NaN 值放在排序列的开头。'last'
:将 NaN 值放在排序列的末尾。
import pandas as pd
import numpy as np
data = {'Name': ['Alice', 'Bob', 'Charlie', 'David', 'Eve'],
'Age': [25, 30, np.nan, 28, 22],
'Score': [85, 92, 78, 88, 95]}
df = pd.DataFrame(data)
# NaN 值放在最前
df_na_first = df.sort_values(by='Age', na_position='first')
print("NaN 值放在最前:n", df_na_first)
# NaN 值放在最后
df_na_last = df.sort_values(by='Age', na_position='last')
print("nNaN 值放在最后:n", df_na_last)
按多列排序
可以轻松地扩展此功能以按多列排序,方法是将列表传递给by
参数。Pandas 将按列表中的第一列排序,然后按第二列排序,依此类推。
# 按 Age(升序)然后按 Score(降序)排序
df_multi = df.sort_values(by=['Age', 'Score'], ascending=[True, False])
print("n多列排序:n", df_multi)
就地排序
默认情况下,sort_values()
返回一个新的排序后的DataFrame。要直接修改 DataFrame,请将inplace
参数设置为True
。请注意,这会修改原始 DataFrame,因此请谨慎操作。
df.sort_values(by='Age', inplace=True)
print("n就地排序:n", df)
通过理解和使用这些参数,可以高效且精确地对 Pandas DataFrame 进行排序,从而简化数据分析工作流程。