是否有一个pandas函数给我一个序列的排序位置?



我想要一个函数,如果对Series进行排序,它将为我提供pandas Series对象中元素的索引。我做了如下的实现:

def series_ordering(series):
positions = series.reset_index(drop=True, inplace=False).sort_values().index
return pd.Series(positions, index=series.index)

但是感觉有点基本。例如,像这样的东西对于计算分位数是必要的。所以我希望一个更简单的方法来实现这一点,成为图书馆的一部分。像这样的东西在Pandas中容易获得吗?

使用argsort获取排序顺序:

的例子:

pd.Series([2,3,1,4,0]).argsort()
输出:

0    4
1    2
2    0
3    1
4    3
dtype: int64

rank,如果你想要排名:

pd.Series([2,3,1,4,0]).rank(method='dense').sub(1).convert_dtypes()

输出:

0    2
1    3
2    1
3    4
4    0
dtype: Int64

相关内容

最新更新