我想要一个函数,如果对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