Pandas 基于索引中整数重复集的数据帧重排序
我有一个包含一些列的数据框,我没有找到按如下方式排列行的方法: 我需要按字段Pandas 基于索引中整数重复集的数据帧重排序,pandas,sorting,Pandas,Sorting,我有一个包含一些列的数据框,我没有找到按如下方式排列行的方法: 我需要按字段标签顺序排列数据帧(如组) 输入 所需订单: I category tags 0 C #29-106 1 B #25-74 2 F #18-109 3 C #26-86 0 B #29-93 1 D #26-170 2 B #26-108 3 B #28-145 0 C #21-102 1 D #28-145 2 A #30-125
标签
顺序排列数据帧(如组)
输入
所需订单:
I category tags
0 C #29-106
1 B #25-74
2 F #18-109
3 C #26-86
0 B #29-93
1 D #26-170
2 B #26-108
3 B #28-145
0 C #21-102
1 D #28-145
2 A #30-125
3 A #29-93
0 B #21-102
1 A #26-108
2 C #30-125
我已经搜索了不同的排序方法,但无法找到仅使用熊猫进行排序的方法。
我感谢你的帮助 一个想法和助手栏,由和: 或者首先按列排序,然后使用和更改顺序:
I category tags
0 C #29-106
1 B #25-74
2 F #18-109
3 C #26-86
0 B #29-93
1 D #26-170
2 B #26-108
3 B #28-145
0 C #21-102
1 D #28-145
2 A #30-125
3 A #29-93
0 B #21-102
1 A #26-108
2 C #30-125
df['a'] = df.groupby('I').cumcount()
df = df.sort_values(['a','I'])
print (df)
I category tags a
2 0 C #29-106 0
0 1 A #25-74 0
3 2 A #18-109 0
4 3 B #26-86 0
8 0 B #29-93 1
1 1 B #26-170 1
5 2 A #26-108 1
12 3 A #28-145 1
9 0 D #21-102 2
7 1 B #28-145 2
6 2 C #30-125 2
13 3 D #29-93 2
14 0 B #21-102 3
10 1 F #26-108 3
11 2 F #30-125 3
df = df.sort_values('I')
df = df.iloc[df.groupby('I').cumcount().argsort()]
print (df)
I category tags
2 0 C #29-106
0 1 A #25-74
3 2 A #18-109
4 3 B #26-86
8 0 B #29-93
1 1 B #26-170
5 2 A #26-108
12 3 A #28-145
9 0 D #21-102
7 1 B #28-145
6 2 C #30-125
13 3 D #29-93
14 0 B #21-102
10 1 F #26-108
11 2 F #30-125