Может быть, это поможет, где вы можете получить результат с одиночной сортировкой!
pd.DataFrame(list(df.apply(lambda x : sorted((x,c) for x,c in zip(x,df.columns)),axis=1)),
index=df.index)
0 1 2
U1 (0.0, 'U2') (0.2, 'U3') (1.0, 'U1')
U2 (0.0, 'U3') (0.4, 'U1') (1.0, 'U2')
U3 (0.0, 'U1') (0.45, 'U2') (1.0, 'U3')