Pandas DataFrame indexing, Выбор строк с конкретными столбцами, которые являются значениями NaN - PullRequest
0 голосов
/ 01 мая 2018

Учитывая, что в следующем примере у меня есть кадр данных pandas (с большим количеством строк / столбцов в реальном наборе данных):

   | t1 | val1 | val2 | val3 | val4
------------------------------------
  0| 1  | 1    | NaN  | NaN  | NaN
  1| 2  | 12   |  5   | NaN  | 4
  2| 3  | 104  |  6   | NaN  | NaN
  3| 4  | -1   |  7   | 6    | NaN
  4| 1  | -3   |  8   | 7    | 10

Я хотел бы извлечь только те строки, где t1 == 1 и val2, val3 и val4 являются значениями NaN и только некоторые столбцы.

Например, в приведенном выше кадре данных я хотел бы получить только первую строку.

До сих пор я пробовал следующее и некоторые его варианты без недостатков:

Я определил список меток для интересующих меня столбцов:

labels = [ 't1', 'val2', 'val3', 'val4']

Затем я запускаю следующий код, чтобы получить все значения с t1 == 1 и только указанные столбцы.

df2 = df.loc[df.t1 == 1, labels]

После этого я пытаюсь получить только строки, в которых val2, val3 и val4 являются NaN одновременно. Я написал следующий код, но он не работает:

df3 = df2.loc[df2[labels].isnull() == True, labels]

Но он возвращает следующую ошибку:

ValueError: Cannot index with multidimensional key

Вы знаете, что не так? Или другой способ получить результаты, которые я хотел бы получить?

Заранее спасибо.

1 Ответ

0 голосов
/ 01 мая 2018

Вы должны использовать all

df2[df2[['val2','val3','val4']].isnull().all(1)]
Out[544]: 
   t1  val2  val3  val4
0   1   NaN   NaN   NaN
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...