pandas.Series.sort_values#
- Series.sort_values(*, axis=0, ascending=True, inplace=False, kind='quicksort', na_position='last', ignore_index=False, key=None)[源代码][源代码]#
按值排序。
按某个标准对序列进行升序或降序排序。
- 参数:
- 轴{0 或 ‘index’}
未使用。参数需要与 DataFrame 兼容。
- 升序布尔值或布尔值列表,默认值为 True
如果为真,按升序排序值,否则按降序排序。
- inplace布尔值, 默认为 False
如果为真,则就地执行操作。
- 种类{‘quicksort’, ‘mergesort’, ‘heapsort’, ‘stable’}, 默认 ‘quicksort’
排序算法的选择。更多信息请参见
numpy.sort()
。’mergesort’ 和 ‘stable’ 是仅有的稳定算法。- na_position{‘first’ 或 ‘last’},默认 ‘last’
参数 ‘first’ 将 NaN 放在开头,’last’ 将 NaN 放在末尾。
- ignore_index布尔值, 默认为 False
如果为真,生成的轴将被标记为 0, 1, …, n - 1。
- 关键可调用,可选
如果不是 None,在排序之前将键函数应用于序列值。这与内置
sorted()
函数中的 key 参数类似,但显著的区别是这个 key 函数应该是 矢量化的。它应该期望一个Series
并返回一个类似数组的对象。
- 返回:
- 系列或无
如果
inplace=True
,则按值排序的序列或为 None。
参见
Series.sort_index
按系列索引排序。
DataFrame.sort_values
按任一轴的值对 DataFrame 进行排序。
DataFrame.sort_index
按索引排序 DataFrame。
示例
>>> s = pd.Series([np.nan, 1, 3, 10, 5]) >>> s 0 NaN 1 1.0 2 3.0 3 10.0 4 5.0 dtype: float64
按升序排序值(默认行为)
>>> s.sort_values(ascending=True) 1 1.0 2 3.0 4 5.0 3 10.0 0 NaN dtype: float64
按降序排列值
>>> s.sort_values(ascending=False) 3 10.0 4 5.0 2 3.0 1 1.0 0 NaN dtype: float64
将 NAs 值排在前面进行排序
>>> s.sort_values(na_position="first") 0 NaN 1 1.0 2 3.0 4 5.0 3 10.0 dtype: float64
排序一系列字符串
>>> s = pd.Series(["z", "b", "d", "a", "c"]) >>> s 0 z 1 b 2 d 3 a 4 c dtype: object
>>> s.sort_values() 3 a 1 b 4 c 2 d 0 z dtype: object
使用键函数进行排序。你的 key 函数将被传递
Series
的值,并应返回类似数组的结果。>>> s = pd.Series(["a", "B", "c", "D", "e"]) >>> s.sort_values() 1 B 3 D 0 a 2 c 4 e dtype: object >>> s.sort_values(key=lambda x: x.str.lower()) 0 a 1 B 2 c 3 D 4 e dtype: object
NumPy ufuncs 在这里工作得很好。例如,我们可以按值的
sin
进行排序。>>> s = pd.Series([-4, -2, 0, 2, 4]) >>> s.sort_values(key=np.sin) 1 -2 4 4 2 0 0 -4 3 2 dtype: int64
更复杂的用户定义函数也可以使用,只要它们期望一个 Series 并返回一个类数组对象。
>>> s.sort_values(key=lambda x: (np.tan(x.cumsum()))) 0 -4 3 2 4 4 1 -2 2 0 dtype: int64