代码之家  ›  专栏  ›  技术社区  ›  Dawei

如何为熊猫的每一行清楚地排序。数据帧

  •  4
  • Dawei  · 技术社区  · 7 年前

    我所拥有的

    用户-用户相似度矩阵,其中一些行具有重复值,并且 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
    

    相同值之间的秩并不重要。但它必须是一个独特的价值观。和 必须保留。

    我累了什么

    我试过了 df.rank(ascending =False,axis = 1) ( doc ),它没有给我一个明确的秩值。
    我也试过了 scipy.stats.rankdata ( doc ),但它无法保持 .

    1 回复  |  直到 7 年前
        1
  •  9
  •   Scott Boston    7 年前

    使用 rank 具有 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