我有一个带有ID和月的pandas df,我想做的是如果ID / Month首先出现在数据集中,就用它来标记
ID Month Number
123 201501 1
123 201502 2
123 201503 3
234 201502 1
234 201503 2
455 201503 1
因此,您可以看到每个月在数据集中多次出现ID 123
。此外,ID 234
仅在月201502
内发生。我想要做的是在行被激活时用行标记行。
不确定会出现什么问题,但这是我从您提供的公式中获得的输出:
ID Month Num
12 201510 1
12 201511 17
12 201512 2
12 201601 3
12 201602 4
12 201603 5
12 201604 6
12 201605 7
12 201606 8
12 201607 9
12 201608 10
12 201609 11
12 201610 12
12 201611 13
12 201612 14
12 201701 15
12 201702 16
答案 0 :(得分:0)
您似乎可以使用cumcount
:
df = df.sort_values(['ID', 'Month']).reset_index()
df['num'] = df.groupby('ID').cumcount() + 1
print (df)
ID Month Number num
0 123 201501 1 1
1 123 201502 2 2
2 123 201503 3 3
3 234 201502 1 1
4 234 201503 2 2
5 455 201503 1 1