用户 - 用户相似度矩阵,其中某些行具有重复值且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.rankdata
(doc),但它无法保留NaN
。
答案 0 :(得分:4)
将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