I have a dataframe df that has two columns consisting of bools.
df['trial']
df['subscribe']
I want to create a new column df['without_trial'] that is true when df['subscribe'] is true and df['trial'] is false, and false otherwise.
How can I do that? I have tried with the df.loc but it never gives me the right values.
CodePudding user response:
If you have pure boolean columns as input, use the AND (&) and NOT (~) operators:
df['without_trial'] = df['trial'] & ~df['subscribe']
If you potentially have mixed values use eq (equal) and ne (not equal):
df['without_trial'] = (df['trial'].eq(True)
& df['subscribe'].ne(True)
)
CodePudding user response:
You can just outright define the new column using the operators ~ (NOT in pandas) and & (AND):
df['without_trial'] = df['subscribe'] & ~df['trial']
