панды И фильтрация

#pandas #python-2.7 #dataframe

#панды #python-2.7 #фрейм данных

Вопрос:

Я думал, что «amp;» означает И, но в приведенном ниже примере он действует как ИЛИ, потому что это должно возвращать строку с индексом = 1.
Мне нужны строки, в которых столбец «e» НЕ равен 1, А столбец «g» НЕ является «a» одновременно, но здесь это в основном ИЛИ, потому что этоне возвращает строк. Как бы вы реализовали И?

 ex=pd.DataFrame([[1,2,"a"],[1,2,"b"]], columns=['e','f','g'])
ex[(ex.e!=1) amp; (ex.g!="a")]
 

введите описание изображения здесь

Редактировать: не работает с «и»
введите описание изображения здесь

Комментарии:

1. Вы делаете побитовое и. Вам нужны логические и: ex[(ex.e!=1) and (ex.g!="a")]

2. не работает @TimBiegeleisen

Ответ №1:

Вы должны добавить ~ спереди, это исключит только строку с e = 1 и g = a

 out = ex[~((ex.e==1) amp; (ex.g=="a"))]
print(out)
   e  f  g
1  1  2  b
 

Комментарии:

1. привет, это возвращает обе строки

2. @Chris назначьте его обратно новому фрейму данных