user_id_2     1        2          3         4         5
user_id_1
   1      0.000000  0.707107  0.388075  0.668153  0.559017
   2      0.707107  0.000000  0.504916  0.491354  0.632456
>> 3      0.388075  0.504916  0.000000  0.373383  0.225618 <<
   4      0.668153  0.491354  0.373383  0.000000  0.448211
   5      0.559017  0.632456  0.225618  0.448211  0.000000


这些是一些计算的结果。
我想知道是否可以选择一行并用列对最高值进行排序。

例如。选择行user_id_1(3)

user_id_1      user_id_2
    3              2
    3              1
    3              4
    3              5
    3              3

最佳答案

Series.argsort的选定行的descending order中使用DataFrame.loc,获取列名称的新顺序,并通过构造函数创建新的DataFrame:

val = 3
df = pd.DataFrame({'user_id_1':val,
                   'user_id_2':df.columns[(-df.loc[val]).argsort()]})

print (df)
   user_id_1 user_id_2
0          3         2
1          3         1
2          3         4
3          3         5
4          3         3


或者,如果只想订购,请添加1

val = 3
df = pd.DataFrame({'user_id_1':val,
                   'user_id_2':(-df.loc[val]).argsort() + 1})

print (df)
   user_id_1  user_id_2
1          3          2
2          3          1
3          3          4
4          3          5
5          3          3

关于python - (Python/Pandas)对值进行排序时的数据透视表,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/60033712/

10-12 22:53