How to write a lambda function that is conditional on two variables (columns) in python
conditional-statements, lambda, multiple-columns, pandas, python
Solution
Use `where`:
df['dummyVar '] = df['x'].where((df['x'] > 100) & (df['y'] < 50), df['y'])
This will be much faster than performing an apply operation as it is vectorised.
Problem
I have a data set, df, with two variables, x and y. I want to write a function that does the following: x if x>100 and y<50 else y I am used to doing data analysis in STATA so I'm relatively new to pandas for data analysis. If it helps, in stata it would look like: replace x = cond(x>100 & y<50, x, y) In other words, the function is conditional on two columns in df and will return a value from one variable or the other in each row depending on whether the condition is met. So far I have been creating new variables through new functions like: df.dummyVar = df.x.apply(lambda x: 1 if x>100 else 0) Using StackOverflow and the documentation I have only been able to find how to apply a function dependent on a single variable to more than one column (using the axis option). Please help.