Home > Software design >  applying multiple conditions in pandas dataframe
applying multiple conditions in pandas dataframe

Time:02-15

I want to fill an column with true or false, depending on whether a condition is met. I know to use any() method, but I need to compare values of two columns. I tried and have not succeeded- using & gives type error.

my data looks something like

A   B   condition_met
1   2   
3   3
5   9
7   2

the expected output is something like my data looks something like

A   B   condition_met
1   2   true
3   3   true
5   9   true
7   2   false

I want the value in condition_met if A>3 and B>4

What I tried was

df.loc[df['A'] > 3 & 'B' > 4, 'condition_met'] = 'True'

upd: I need to check if condition is met. i.e., if A>3 then B>4. if A<=3 then it must still be true, since the condition doesn't exist.

CodePudding user response:

Run:

df['condition_met'] = (df.A > 3) & (df.B > 4)

Another possible approach is to use logical_and function from Numpy:

df['condition_met'] = np.logical_and(df.A.gt(3), df.B.gt(4))

CodePudding user response:

You can assign mask with parantheses, because priority of operators:

df['condition_met'] = (df.A>3) & (df.B>4)

Or:

df['condition_met'] = df.A.gt(3) & df.B.gt(4)

Your solution - 'True' if match else NaNs:

df.loc[(df['A'] > 3) & (df['B'] > 4), 'condition_met'] = 'True'

EDIT:

df['condition_met'] = (df.A>3) & (df.B>4) | (df.A <= 3)
print (df)
   A  B  condition_met
0  1  2           True
1  3  3           True
2  5  9           True
3  7  2          False
  • Related