对数组排序:排除NaN并将最低的秩赋给最高的numb

2024-04-26 04:52:59 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个数组/熊猫行:

array = [0.8, np.nan, 0.1, -0.5, 0.7]

我想要这个输出:

^{pr2}$

对我来说,这些方法的排列方向不对:

scipy.stats.mstats.rankdata
scipy.stats.rankdata

Tags: 方法statsnpscipy数组nan方向array
2条回答

这里有一个方法-

mask = ~np.isnan(a)
out = np.full(a.size,np.nan)
out[mask] = np.unique(-a[mask],return_inverse=1)[1]+1

样本运行-

^{pr2}$

既然您提到了Pandas,您可以使用Series.rank方法:

arr = [0.8, np.nan, 0.1, -0.5, 0.7]
pd.Series(arr).rank(ascending=False)
Out: 
0    1.0
1    NaN
2    3.0
3    4.0
4    2.0
dtype: float64

这将创建并返回熊猫系列。如果您想避免创建一个系列,如@ajcr在评论中所述,可以使用rank函数。这将返回一个ndarray:

^{pr2}$

相关问题 更多 >

    热门问题