如何对pandas.DataFrame中的每一行分别进行排名

Daw*_*wei 3 python data-mining pandas

是)我有的

用户-用户相似度矩阵,其中某些行具有重复的值,并且 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
Run Code Online (Sandbox Code Playgroud)

我想要的是

我想对每行的相似性分别进行排名。像这样:

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
Run Code Online (Sandbox Code Playgroud)

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

我累了

我尝试了df.rank(ascending =False,axis = 1)doc),但未能给我排名的明显价值。
我也尝试过scipy.stats.rankdatadoc),但是不能保留NaN

Sco*_*ton 5

使用rankmethod='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
Run Code Online (Sandbox Code Playgroud)