我想知道是否有人知道如何以下列方式对pandas数据帧进行排序:
a)我有以下随机排序的数据,其ID多次出现,标签为0或1:
id | label ------ | ------ 1 | 1 1 | 0 1 | 0 2 | 1 2 | 0 2 | 0 3 | 0 3 | 0 3 | 0
我想按升序对标签进行排序,然后按升序对id进行排序,但不进行分组,如下所示:
id | label ------ | ------ 1 | 0 2 | 0 3 | 0 1 | 0 2 | 0 3 | 0 3 | 0 1 | 1 2 | 1
提前致谢!
答案 0 :(得分:3)
首先按id和label排序,然后使用cumcount创建表示1,2,3组的索引,然后按索引和标签排序。
df_out = df.sort_values(by=['id','label'])\
.set_index(df.groupby('id').cumcount())\
.sort_index()\
.sort_values(by='label')
输出:
id label
0 1 0
0 2 0
0 3 0
1 1 0
1 2 0
1 3 0
2 3 0
2 1 1
2 2 1