python - 排列数组 : Exclude NaN and assign lowest rank to highest number

标签 python arrays pandas numpy rank

我有一个数组/pandas 行:

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

我想要这个输出:

array = [1, np.nan, 3, 4, 2]

这些方法对我来说排名错误:

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

最佳答案

既然你提到了 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

这将创建并返回一个 Pandas 系列。如果你想避免创建系列,正如@ajcr 在评论中指出的那样,你可以使用 rank 函数。这将返回一个 ndarray:

pd.algos.rank_1d_float64(arr, ascending=False)
Out: array([  1.,  nan,   3.,   4.,   2.])

关于python - 排列数组 : Exclude NaN and assign lowest rank to highest number,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41085467/

相关文章:

Python : pygame. key.get_pressed 不起作用

c++ - 从用户输入的函数返回一个字符串

c# - 如何添加像 Point[] 这样的自定义类型以便能够在应用程序设置文件中保存数据?

python - 使用列表作为行中的值创建 Pandas 数据框

Python根据不同的行创建新的数据框列

python - Sqlalchemy 关系 : Order children by joined table

python - 如何使用 Pandas 完全忽略 csv 中的空格

python - 如何从另一个python进程查询/设置一个python进程中的变量?

arrays - 在 Swift3 中对数组进行排序

python-3.x - 运行经过训练的机器学习模型时出现错误