overwriting the column rows basis the condition

Question:

Existing Dataframe :

Id           condition1        condition2       score
A               attempt           pass            0
A               attempt           fail            0
B               attempt           pass            0
B               attempt           level_1         0
B               attempt           fail            0
C               attempt           fail            0
D               attempt           fail            0

Expected Dataframe :

Id           condition1        condition2       score
A               attempt           pass            1
A               attempt           fail            1
B               attempt           pass            1
B               attempt           level_1         1
B               attempt           fail            1
C               attempt           fail            0
D               attempt           fail            0

I am looking to tag score in every row of unique Id as 1 if in any row below condition is satisfied : condition1 == ‘attempt’ & condition2 ==’pass’.

Asked By: Roshankumar

||

Answers:

You can try:

m1 = df['condition1'].eq('attempt')
m2 = df['condition2'].eq('pass') | df['condition2'].eq('level_1')

df['score'] = (m1 & m2)
df['score'] = df.groupby('Id')['score'].transform(lambda x: x.any().astype(int))

  Id condition1 condition2  score
0  A    attempt       pass      1
1  A    attempt       fail      1
2  B    attempt       pass      1
3  B    attempt    level_1      1
4  B    attempt       fail      1
5  C    attempt       fail      0
6  D    attempt       fail      0
Answered By: Anoushiravan R
Categories: questions Tags: , ,
Answers are sorted by their score. The answer accepted by the question owner as the best is marked with
at the top-right corner.