Cómo clasificar claramente para cada fila en pandas.DataFrame

Lo que tengo

una matriz de similitud usuario-usuario que algunas filas tienen valor duplicado y 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 

Lo que quiero

Quiero clasificar la similitud de cada fila de forma distinta. Al igual que:

 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 

El rango entre el mismo valor no es importante. Pero tiene que ser un valor distinto. Y NaN debe mantenerse.

Lo que me canse

Intenté df.rank(ascending =False,axis = 1) ( doc ), que no me dio un valor distinto de rango.
También probé scipy.stats.rankdata ( doc ), pero no puedo mantener NaN .

Usa el rank con el 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