Pandas 参考一列降序排列三个列表列

Pandas sort three list columns in descending order with reference to one column

我有一个这样的 pandas 数据框:

df = 
    userid        item_id                   label             score
      1            [1, 2, 3]               [0, 0, 1]          [0.2, 0.3, 0.5]
      ...        ...                            ...
      

item_id labelscore 是 df 的相同大小的列表列(不限于大小 3)。我想按降序对 score 列进行排序,labelitem_id 也应该参考 score 列的新顺序进行排序。

预期输出

 df =
     userid.     item_id.       truth       score
       1          [3, 2, 1]   [1, 0, 0]   [0.5, 0.3, 0.2]

是否可以在 Pandas 中执行此操作?

我是如何形成这个数据框的:

我原来有这个数据框:

  df_original =
       userid        item_id                   label             score
        1              1                         0                 0.2
        1              2                         0                 0.3
        1              3                         1                 0.5

我打过:

  df = df_original.groupby('user_id').agg(list)

如果有办法从df_original实现Expected Output,那也是可以的。

尝试 sort_valuesgroupby 再次转换为列表

(df_original.sort_values(['userid', 'score'], ascending=[True,False])
            .groupby('userid').agg(list)
            .reset_index()
)

编辑

@Ben.T警告的那样,可以使其更简单

(df_original.sort_values('score', ascending=False)
            .groupby('userid').agg(list)
            .reset_index()
)