I have the following data frame:
HorseId | FGrating | Max FGrating | Top |
---|---|---|---|
1736 | 110 | No (no Max FGrating to compare with) | |
1736 | 124 | 110 | Yes (FGrating - Max FGrating>=4) |
1736 | 118 | 124 | No (FGrating - Max FGrating <4) |
13973 | 144 | No (no Max FGrating to compare with) | |
13973 | 137 | 144 | No (FGrating - Max FGrating <4) |
The Top
column is "Yes" or "1" when the difference between FGrating
and MaxFGrating
for that row is 4 or more.
I know I should use groupby
, because I need this for each HorseId
and perhaps the diff
function, but I cannot put them together.
How can I do it?
CodePudding user response:
Your expected output is hard to make sense of, because the values in Top do not seem driven by any conditions in the table, except those two rows with MaxFGrating == -1
seem to be consistently MaxFGrating - FGrating
.
>>> ((df['FGrating'] - df['Max FGrating']) >= 4).map({True:'Yes', False:'No'})
0 Yes
1 Yes
2 No
3 Yes
4 No
dtype: object
Or MaxFGrating - FGrating
.
>>> ((df['Max FGrating'] - df['FGrating']) >= 4).map({True:'Yes', False:'No'})
0 No
1 No
2 Yes
3 No
4 Yes
dtype: object