熊猫参照一列以降序排列三个列表列

问题描述

我有一个这样的熊猫数据框:

df = 
    userid        item_id                   label             score
      1            [1,2,3]               [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,1]   [1,0]   [0.5,0.2]

在熊猫市有可能这样做吗?

我如何形成此数据框:

我原来有这个数据框:

  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)

如果有一种方法可以从Expected Output达到df_original,那也很好。

解决方法

尝试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()
)

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...