问题描述
df =
userid item_id label score
1 [1,2,3] [0,1] [0.2,0.3,0.5]
... ... ...
item_id
, label
和score
是df大小相同的列表列(不限于大小3)。我想按降序对score
列进行排序,并且label
和item_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_values
和groupby
再次转换为列表
(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()
)