У меня есть следующий фрейм данных (с большим количеством столбцов)
ID CAT ACTION D1
1 PRE opened 111
1 PRE phone 111
1 PRE opened 111
1 PRE phone 111
2 POS opened 222
2 POS navi 222
1 PRE opened 111
1 PRE phone 111
3 POS opened 111
3 POS navi 222
3 POS phone 222
3 POS navi 222
2 POS opened 222
2 POS phone 222
5 PRE opened 111
6 PRE opened 111
6 PRE opened 111
6 PRE phone 111
6 PRE navi 111
В этой таблице есть регистр действий, и я хотел бы отметить действия для каждого открытого действия, как это
ID CAT ACTION D1 flg
1 PRE opened 111 1
1 PRE phone 111 1
1 PRE opened 111 2
1 PRE phone 111 2
2 POS opened 222 3
2 POS navi 222 3
1 PRE opened 111 4
1 PRE phone 111 4
3 POS opened 111 5
3 POS navi 222 5
3 POS phone 222 5
3 POS navi 222 5
2 POS opened 222 6
2 POS phone 222 6
5 PRE opened 111 7
6 PRE opened 111 8
6 PRE opened 111 9
6 PRE phone 111 9
6 PRE navi 111 9
Я использую этот код, но для его завершения требуется много времени
i=0
for y in range(1, len(df)):
if(df.loc[y,'ACTION']=='opened'):
i+=1
df.loc[y,'new_column']=i
else:
df.loc[y,'new_column']=i
Конечная цель - получить что-то вроде этого, что я притворяюсь, что использую pivot
flg ID CAT D1 Int ACTION
1 1 PRE 111 phone opened-phone
2 1 PRE 111 phone opened-phone
3 2 POS 222 navi opened-navi
4 1 PRE 111 phone opened-phone
5 3 POS 222 phone opened-navi-phone-navi
6 2 POS 222 phone opened-phone
7 5 PRE 111 opened opened
8 6 PRE 111 opened opened
9 6 PRE 111 phone opened-phone-navi