在astropy选项卡中放置带有遮罩元素的行

2024-05-13 08:26:32 发布

您现在位置:Python中文网/ 问答频道 /正文

考虑一个astropyTable() object。在

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

我需要删除至少包含一个掩码元素的所有行。最后的表格应该是:

^{pr2}$

这似乎是一个简单的任务,但我在docs中找不到方法来完成它。在

添加

我知道我可以使用.to_pandas()将表转换为pandas对象,然后使用类似^{}的东西,但这迫使我安装了我不想安装的pandas。在


Tags: pandasdatatypeasciidatweatherdaywd
2条回答

一般来说

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

这个过程所做的只是一种普遍的方法

^{pr2}$

另一种方法是:

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

但是我同意你的观点,这种对无效值的过滤应该由一个屏蔽表来支持。在

相关问题 更多 >