繁体   English   中英

如何对pandas.DataFrame中的每一行进行明确排名

[英]How to rank distinctly for each row in pandas.DataFrame

是)我有的

用户 - 用户相似度矩阵,某些行具有重复值和NaN

userId  316       320       359       370       910
userId                                             
316     1.0  0.500000  0.500000  0.500000       NaN
320     0.5  1.000000  0.242837  0.019035  0.031737
359     0.5  0.242837  1.000000  0.357620  0.175914
370     0.5  0.019035  0.357620  1.000000  0.317371
910     NaN  0.031737  0.175914  0.317371  1.000000

我想要的是

我希望明确排名每行的同一性。 像这样:

userId  316  320  359  370  910
userId                         
316       1    2    3    4   NaN
320       2    1    3    5    1
359       2    4    1    3    5
370       2    5    3    1    4
910      NaN   4    3    2    1

相同值之间的等级并不重要。 但它需要是一个独特的价值。 必须保持NaN

我累了

我试过df.rank(ascending =False,axis = 1)doc ),但没有给我一个明确的排名值。
我也尝试过scipy.stats.rankdatadoc ),但它无法保留NaN

使用rank with method='first'

df.rank(1, ascending=False, method='first')

     316  320  359  370  910
316  1.0  2.0  3.0  4.0  NaN
320  2.0  1.0  3.0  5.0  4.0
359  2.0  4.0  1.0  3.0  5.0
370  2.0  5.0  3.0  1.0  4.0
910  NaN  4.0  3.0  2.0  1.0

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM