📅  最后修改于: 2023-12-03 15:04:21.903000             🧑  作者: Mango
argsort()
是 Pandas 中的一个函数,它返回 Series 中元素排序后的索引值。
Series.argsort(axis=0, kind='quicksort', order=None, na_last=True)
axis
:排序轴的方向,0 表示列,1 表示行,默认为 0。kind
:使用什么排序算法,可以为 quicksort
、mergesort
或 heapsort
。默认为 quicksort
。order
:按照某个列或行的值排序,默认为 None
。na_last
:缺失值放在排序结果的最后面,默认为 True
。排序后的元素索引值。
import pandas as pd
data = pd.Series([9, 5, 8, 4, 7], index=['d', 'a', 'c', 'b', 'e'])
sorted_index = data.argsort()
print(sorted_index)
输出:
a 3
b 1
c 2
d 4
e 0
dtype: int64
解释:data
中的数据为 [9, 5, 8, 4, 7]
,对应索引为 ['d', 'a', 'c', 'b', 'e']
。使用 argsort()
函数进行排序,返回的是 [5, 1, 2, 4, 0]
,其中,1
在原 Series 中对应的索引是 'a'
,所以输出结果为 a 3
。
排序算法的选择:
quicksort
是经典算法,平均情况下的性能很好,最坏情况下的性能也比较稳定。但是在数组近乎有序的情况下速度会很慢,容易产生栈溢出;mergesort
算法不会产生栈溢出的风险,但是要使用额外的内存;heapsort
算法在所有情况下的性能表现都比较稳定,但是不支持“排序某一列或行”的功能,只能对整个 Series 进行排序。