chuky pedro
chuky pedro

Reputation: 745

Adding new column to an existing dataframe column base on a given condition

I have a Dataframe with the below column names, and I want to create a new column based on a given condition. The condition are to create a new column Race for each unique EVENT_ID in the dataframe check for rows in the WIN_LOSE that has 1 as value, take the SELECTION_TRAP value that corespond to that WIN_LOSE row and create the Race.

I tried using the pandas where function but I an not getting it right

df['Race'] = df.where(df['WIN_LOSE']==1,df['SELECTION_TRAP'],axis = 0)

EVENT_ID    SELECTION_TRAP  WIN_LOSE
174331755       1             0
174331755       2             0
174331755       7             1
174331755       4             0
174331755       3             0
174331755       6             0
174331755       8             0
174329130       5             0
174329130       7             1
174329130       1             0
174329130       4             0
174329130       2             0
174329130       8             0

My expected output should look this.

EVENT_ID    SELECTION_TRAP  WIN_LOSE  RACE
174331755       7             1        7
174329130       7             1        7

Upvotes: 2

Views: 50

Answers (2)

jezrael
jezrael

Reputation: 863741

First filter by 1 in WIN_LOSE by boolean indexing and then assign new column.

df1 = df[df['WIN_LOSE']==1].copy()
df1['RACE'] = df1['SELECTION_TRAP']
print (df1)
    EVENT_ID  SELECTION_TRAP  WIN_LOSE  RACE
2  174331755               7         1     7
8  174329130               7         1     7

Upvotes: 1

sophocles
sophocles

Reputation: 13841

IIUC, you can create your column called 'RACE', when 'WIN_LOSE' equals 1, and then filter your df:

df.loc[df['WIN_LOSE'].eq(1),'RACE'] = df['SELECTION_TRAP']
df.loc[df.RACE.notnull()]

Prints back:

    EVENT_ID  SELECTION_TRAP  WIN_LOSE  RACE
2  174331755               7         1   7.0
8  174329130               7         1   7.0

Upvotes: 1

Related Questions