Сбросить строки с замаскированными элементами в таблице астропии - PullRequest
0 голосов
/ 09 мая 2018

Рассмотрим объект astropy Table () .

from astropy.io import ascii

weather_data = """
  day,precip,type
  ,1.5,rain
  Tues, 9.,
  Wed,1.1,snow
  ed,,aaa
  Wd,1.1,snow
  """

dat = ascii.read(weather_data)
print(dat)

day  precip type
---- ------ ----
  --    1.5 rain
Tues    9.0   --
 Wed    1.1 snow
  ed     --  aaa
  Wd    1.1 snow

Мне нужно удалить все строки, которые содержат хотя бы один замаскированный элемент. Финальный стол должен выглядеть следующим образом:

day  precip type
---- ------ ----
 Wed    1.1 snow
  Wd    1.1 snow

Это кажется простой задачей, но я не смог найти способ сделать это в документах .

Добавить

Я знаю, что мог бы использовать .to_pandas(), чтобы преобразовать таблицу в pandas объект, а затем использовать что-то вроде .dropna(), но это заставляет меня установить pandas, что я и не надеваю не хочу.

Ответы [ 2 ]

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

Вот еще один способ:

dat.remove_rows(np.where([c.data for c in dat.mask.itercols()])[-1])

Но я согласен с вами, что эта фильтрация недопустимых значений должна поддерживаться замаскированной таблицей.

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

Для обобщенного способа

import operator
# if python3: from functools import reduce
dat[reduce(operator.and_, [~dat[col].mask for col in dat.columns])]

day   precip type
str4 float64 str4
---- ------- ----
 Wed     1.1 snow
  Wd     1.1 snow

То, что делает этот процесс, является просто обобщенным способом

dat[(~dat['day'].mask) & (~dat['precip'].mask) & (~dat['type'].mask)]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...