With this DataFrame, how can I conditionally set rating to 0 when line_race is equal to zero?
line_track line_race rating foreign 25 MTH 10 84 False 26 MTH 6 88 False 27 TAM 5 87 False 28 GP 2 86 False 29 GP 7 59 False 30 LCH 0 103 True 31 LEO 0 125 True 32 YOR 0 126 True 33 ASC 0 124 True
In other words, what is the proper way on a DataFrame to say if ColumnA = x then ColumnB = y else ColumnB = ColumnB
Answers:
Thank you for visiting the Q&A section on Magenaut. Please note that all the answers may not help you solve the issue immediately. So please treat them as advisements. If you found the post helpful (or not), leave a comment & I’ll get back to you as soon as possible.
Method 1
df.loc[df['line_race'] == 0, 'rating'] = 0
Method 2
Use numpy.where to say if ColumnA = x then ColumnB = y else ColumnB = ColumnB:
df['rating'] = np.where(df['line_race']==0, 0, df['rating'])
Method 3
I have always used method given in Selected answer, today I faced a need where I need to Update column A, conditionally with derived values.
the accepted answer shows “how to update column line_race to 0.
Below is an example where you have to derive value to be updated with:
df.loc[df['line_race'].isna(), 'rating'] = ( (df['line_race'] - df['line_race2'])/df['line_race2'] )
Using this you can UPDATE dynamic values ONLY on Rows Matching a Condition.
All methods was sourced from stackoverflow.com or stackexchange.com, is licensed under cc by-sa 2.5, cc by-sa 3.0 and cc by-sa 4.0