用None替换xarray数据集中的值 [英] replace values in xarray dataset with None

查看:259
本文介绍了用None替换xarray数据集中的值的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我想用None替换xarray数据集中变量中的值.我尝试了这种方法,但是没有用:

I want to replace values in a variable in an xarray dataset with None. I tried this approach but it did not work:

da[da['var'] == -9999.]['var'] = None

我收到此错误:*** TypeError: unhashable type: 'numpy.ndarray'

我可以在这里使用类似numpy replace的东西吗? da是xarray数据集.这是da的样子:

Is there something like numpy replace that I could use here? da is xarray dataset. here is what da looks like:

<xarray.Dataset>
Dimensions:  (band: 1, time: 3, x: 4258, y: 2334)
Coordinates:
  * band     (band) int32 1
  * y        (y) float64 4.406e+06 4.406e+06 4.406e+06 4.406e+06 4.406e+06 ...
  * x        (x) float64 1.125e+05 1.126e+05 1.127e+05 1.128e+05 1.129e+05 ...
  * time     (time) datetime64[ns] 2005-12-31 2006-12-31 2007-12-31
Data variables:
    var      (time, band, y, x) float32 dask.array<shape=(3, 1, 2334, 4258), chunksize=(1, 1, 2334, 4258)>

这是da.var的样子:

Here is what da.var looks like:

<xarray.DataArray 'var' (time: 3, band: 1, y: 2334, x: 4258)>
dask.array<shape=(3, 1, 2334, 4258), dtype=float32, chunksize=(1, 1, 2334, 4258)>
Coordinates:
  * band     (band) int32 1
  * y        (y) float64 4.406e+06 4.406e+06 4.406e+06 4.406e+06 4.406e+06 ...
  * x        (x) float64 1.125e+05 1.126e+05 1.127e+05 1.128e+05 1.129e+05 ...
  * time     (time) datetime64[ns] 2005-12-31 2006-12-31 2007-12-31
Attributes:
    transform:   (90.0, 0.0, 112500.0, 0.0, -90.0, 4406400.0, 0.0, 0.0, 1.0)
    crs:         +ellps=GRS80 +no_defs +proj=utm +towgs84=0,0,0,0,0,0,0 +unit...
    res:         (90.0, 90.0)
    is_tiled:    1
    nodatavals:  (-9999.0,)

推荐答案

做到这一点的标准方法是使用where:

The standard way to do this is using where: http://xarray.pydata.org/en/latest/indexing.html#masking-with-where

# Note that I'm going to use `ds` instead of the OP's `da`

# replace all values equal to -9999 with np.nan
ds_masked = ds.where(ds['var'] != -9999.)  

这篇关于用None替换xarray数据集中的值的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆