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)]

Leave a Reply

Your email address will not be published. Required fields are marked *