python – Search for does-not-contain on a DataFrame in pandas
python – Search for does-not-contain on a DataFrame in pandas
You can use the invert (~) operator (which acts like a not for boolean data):
new_df = df[~df[col].str.contains(word)]
, where new_df
is the copy returned by RHS.
contains also accepts a regular expression…
If the above throws a ValueError, the reason is likely because you have mixed datatypes, so use na=False
:
new_df = df[~df[col].str.contains(word, na=False)]
Or,
new_df = df[df[col].str.contains(word) == False]
I was having trouble with the not (~) symbol as well, so heres another way from another StackOverflow thread:
df[df[col].str.contains(this|that)==False]
python – Search for does-not-contain on a DataFrame in pandas
You can use Apply and Lambda :
df[df[col].apply(lambda x: word not in x)]
Or if you want to define more complex rule, you can use AND:
df[df[col].apply(lambda x: word_1 not in x and word_2 not in x)]