Ответ 1
Отметьте комментарий Davtho1983 выше, я думал, что добавлю цвет в комментарий для ясности.
Для тех, кто споткнулся об этом позже с той же ошибкой (как и я). Это очень простое решение. Документация из панд показывает
Series.str.contains(pat, case=True, flags=0, na=nan, regex=True)
Что происходит, метод contains() не применяется к значениям na в DataFrame, они останутся na. Вам просто нужно заполнить значения na булевыми значениями, чтобы вы могли использовать инвертирующий оператор ~
.
В приведенном выше примере следует использовать
df_Anomalous_Vendor_Reasons[~df_Anomalous_Vendor_Reasons['V'].str.contains("File*|registry*", na=False)]
Разумеется, нужно выбрать False или True для аргумента na на основе предполагаемой логики. Любое булево значение, которое вы выберете для заполнения na, будет инвертировано.