【问题标题】:How to rank distinctly for each row in pandas.DataFrame如何对 pandas.DataFrame 中的每一行进行明确排名
【发布时间】:2018-05-06 10:37:28
【问题描述】:

我有什么

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

【问题讨论】:

    标签: python pandas data-mining


    【解决方案1】:

    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
    

    【讨论】:

    • 我以为我接受了。但我发现我只是点击了upvote按钮。对此感到抱歉。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-09-16
    • 1970-01-01
    • 2017-12-23
    相关资源
    最近更新 更多