我想知道是否有人知道如何按以下方式对 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
提前致谢!
最佳答案
首先按 id 和标签排序,然后使用 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
关于python - Pandas Dataframe 排序和列值排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45736127/