按特定顺序移动pandas数据框中的行

问题描述

我有一个熊猫数据框,看起来像这样:

df = pd.DataFrame({
     'job': ['football','football','basketball','hokey','hokey'],'team': [4.0,5.0,9.0,2.0,3.0,6.0,1.0,7.0,8.0,4.0,8.0],'cluster': [0,1,1]
     })

enter image description here

每个cluster包含9个团队。每个群组有3支球队,每种运动类型为footballbasketballhokey。我想对每个集群应用移位功能,以使团队的次序以非常特定的方式发生(我尝试用颜色突出显示):

enter image description here

如何对更大的数据框进行这种转换(以上面显示的方式移动行)?

解决方法

让我们根据列cumcountcluster创建job + sort_values,然后使用cluster对{{ 1}}和这个counter

df['j'] = df.groupby(['cluster','job']).cumcount()
df = df.sort_values(['cluster','j'],ignore_index=True).drop('j',axis=1)

           job  team  cluster
0     football   4.0        0
1   basketball   2.0        0
2        hokey   1.0        0
3     football   5.0        0
4   basketball   3.0        0
5        hokey   7.0        0
6     football   9.0        0
7   basketball   6.0        0
8        hokey   8.0        0
9     football   4.0        1
10  basketball   2.0        1
11       hokey   1.0        1
12    football   5.0        1
13  basketball   3.0        1
14       hokey   7.0        1
15    football   9.0        1
16  basketball   6.0        1
17       hokey   8.0        1