我有一个问题,我需要将数据分为两组,并附加一列来计算子组。
示例dataframe如下所示:
colA colB
1 a
1 a
1 c
1 c
1 f
1 z
1 z
1 z
2 a
2 b
2 b
2 b
3 c
3 d
3 k
3 k
3 m
3 m
3 m
附加新列后的预期输出如下:
colA colB colC
1 a 1
1 a 1
1 c 2
1 c 2
1 f 3
1 z 4
1 z 4
1 z 4
2 a 1
2 b 2
2 b 2
2 b 2
3 c 1
3 d 2
3 k 3
3 k 3
3 m 4
3 m 4
3 m 4
我尝试了以下方法,但无法解决这个看似微不足道的问题:
我尝试过的解决方案1没有给出我想要的:
df['ONES']=1
df['colC']=df.groupby(['colA','colB'])['ONES'].cumcount()+1
df.drop(columns='ONES', inplace=True)
我还玩了transform、cumsum函数和apply,但我似乎无法解决这个问题。感谢您的帮助。
编辑:数据帧上的小错误。
编辑2:为了简单起见,我为B列显示了类似的值,但问题是在一个更大的组中(由colA表示),colB可能不同,因此,需要同时按这两个列进行分组。
编辑3:更新数据框以强调我第二次编辑的意思。希望这能让它更清晰,更具可复制性。