Выборка строк с помощью значений из списка

Необходимо выбрать строки которые бы не соответствовали значению из списка

import pandas as pd
import numpy as np
pd.options.display.expand_frame_repr = False
df = pd.read_excel(r'R:\TEST.xlsx')
s = [u'Проектируемый']
print df.loc[df[u'СТАТУС ОБЪЕКТА']!= s]

Выдаёт ошибку: ValueError: Arrays were different lengths: 3 vs 1

Как правильно прописывать выборку с использованием значений из списка ?


Ответы (1 шт):

Автор решения: CrazyElf

Ошибка у вас выходит потому, что если в s у вас список (пусть и из одного элемента), то Pandas не понимает, как вы хотите сравнивать два списка разного размера между собой.

Проверку на не вхождение в список нужно делать так:

s = [u'Проектируемый',u'Готовый',u'Приемка']
print df.loc[~df[u'СТАТУС ОБЪЕКТА'].isin(s)]
  • isin - проверка на вхождение
  • ~ - логическое отрицание условия

P.S. Python 2 устарел и больше не поддерживается, переходите на Python 3.

→ Ссылка