簡體   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