Для фильтрации строк:
df = df[(df != 'p').all(axis=1)]
Сравнить для не равных:
print ((df != 'p'))
A B C
0 True True True
1 True True True
2 True True False
3 True False True
И проверка для всех True
с в строке:
print ((df != 'p').all(axis=1))
0 True
1 True
2 False
3 False
dtype: bool
Или:
df = df[~(df == 'p').any(axis=1)]
Тест на равенство:
print ((df == 'p'))
A B C
0 False False False
1 False False False
2 False False True
3 False True False
Проверка хотя бы одного True
на строку:
print ((df == 'p').any(axis=1))
0 False
1 False
2 True
3 True
dtype: bool
Инвертировать логическую маску:
print (~(df == 'p').any(axis=1))
0 True
1 True
2 False
3 False
dtype: bool
Для фильтрации подстрок используйте contains
с apply
:
df = df[~df.apply(lambda x: x.astype(str).str.contains('p')).any(axis=1)]
Или:
df = df[~df.stack().astype(str).str.contains('p').unstack().any(axis=1)]
print (df)
A B C
0 1 a x
1 w g n