'Set value when row is maximum in group by - Python Pandas

I am trying to create a column (is_max) that has either 1 if a column B is the maximum in a group of values of column A or 0 if it is not.

Example:

[Input]

A B 
1 2
2 3
1 4
2 5

[Output]

A B is_max
1 2   0 
2 5   0
1 4   1
2 3   0

What I'm trying:

df['is_max'] = 0
df.loc[df.reset_index().groupby('A')['B'].idxmax(),'is_max'] = 1


Solution 1:[1]

Fix your code by remove the reset_index

df['is_max'] = 0
df.loc[df.groupby('A')['B'].idxmax(),'is_max'] = 1
df
Out[39]: 
   A  B  is_max
0  1  2       0
1  2  3       0
2  1  4       1
3  2  5       1

Sources

This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.

Source: Stack Overflow

Solution Source
Solution 1 BENY