Pyd
Pyd

Reputation: 6159

Pandas increment values on groupby with a condition

Lets say I have a df like this, need to groupby on links, and if a link repeated more than 3 times, should increment its value

name    links
A   https://a.com/-pg0
B   https://b.com/-pg0
C   https://c.com/-pg0
D   https://c.com/-pg0
x   https://c.com/-pg0
y   https://c.com/-pg0
z   https://c.com/-pg0
E   https://e.com/-pg0
F   https://e.com/-pg0

Expected output, here names C,D,x,y,z, repeated more than 3, so first 3 will be zero and next will be incremented

name    links
A   https://a.com/-pg0
B   https://b.com/-pg0
C   https://c.com/-pg0
D   https://c.com/-pg0
x   https://c.com/-pg0
y   https://c.com/-pg1
z   https://c.com/-pg1
E   https://e.com/-pg0
F   https://e.com/-pg0

Upvotes: 0

Views: 391

Answers (1)

BENY
BENY

Reputation: 323226

You can try cumcount with //

s = df.groupby('links').cumcount()//3
Out[125]: 
0    0
1    0
2    0
3    0
4    0
5    1
6    1
7    0
8    0
dtype: int64

df['links'] = df['links'] + s.astype(str)

Upvotes: 3

Related Questions