У меня есть код, который counts
количество значений в настоящее время. Он достигает этого, анализируя df
, чтобы увидеть, не произойдут ли они снова.
Так что для df
ниже я подсчитываю, сколько значений в настоящее время встречается в Col['Area']
.
import pandas as pd
d = ({
'Code' : ['A','A','B','A','B','B','A','B','A','A'],
'Area' : ['Home','Home','Shops','Park','Cafe','Shops','Home','Cafe','Work','Park'],
})
df = pd.DataFrame(data=d)
df['u'] = df[::-1].groupby('Area').Area.cumcount()
ids = [1]
seen = set([df.iloc[0].Area])
dec = False
for val, u in zip(df.Area[1:], df.u[1:]):
ids.append(ids[-1] + (val not in seen) - dec)
seen.add(val)
dec = u == 0
df['On'] = ids
Проблема в том, что я хочу применить эту функцию только к значению 'A'
в Col['Code']
.
Я могу сделать следующее, но это сокращает мою df
.
df = df[df.Code == 'A']
Я надеюсь произвести следующее;
Code Area u On
0 A Home 2 1
1 A Home 1 1
2 B Shops
3 A Park 1 2
4 B Cafe
5 B Shops
6 A Home 0 2
7 B Cafe
8 A Work 0 2
9 A Park 0 2
Могу ли я изменить это, чтобы добавить ['Code']
df['u'] = df[::-1].groupby('Area').Area.cumcount()