pandas.Series.sort_values#
- Series.sort_values(*, axis=0, ascending=True, inplace=False, kind='quicksort', na_position='last', ignore_index=False, key=None)[源代码]#
按值排序。
按某个标准升序或降序对 Series 进行排序。
- Parameters:
- axis{0 或 ‘index’}
未使用。参数是与 DataFrame 兼容性所必需的。
- ascending布尔值或布尔值列表,默认为 True
如果为 True,則按升序排序;否则按降序排序。
- inplacebool,默认 False
如果为 True,则原地执行操作。
- kind{‘quicksort’, ‘mergesort’, ‘heapsort’, ‘stable’},默认为 ‘quicksort’
排序算法的选择。有关更多信息,请参阅
numpy.sort()。’mergesort’ 和 ‘stable’ 是唯一稳定的算法。- na_position{‘first’ 或 ‘last’},默认为 ‘last’
参数 ‘first’ 将 NaN 放在开头,’last’ 将 NaN 放在结尾。
- ignore_indexbool,默认 False
如果为 True,则生成的轴标签为 0, 1, …, n - 1。
- keycallable,可选
如果不是 None,则在排序前将键函数应用于 Series 值。这类似于内置
sorted()函数中的 key 参数,但有一个显著区别:此 key 函数应该是 向量化的。它应该接受一个Series并返回一个类数组。
- Returns:
- Series 或 None
按值排序后的 Series,如果
inplace=True则为 None。
参见
Series.sort_index按 Series 的索引排序。
DataFrame.sort_values沿任一轴按值对 DataFrame 进行排序。
DataFrame.sort_index按索引对 DataFrame 进行排序。
Examples
>>> 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
排序值,将 NA 放在前面。
>>> s.sort_values(na_position='first') 0 NaN 1 1.0 2 3.0 4 5.0 3 10.0 dtype: float64
对字符串 Series 进行排序。
>>> 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