Python Xarray`Dataset.sel()`沿一个维度选择多个值

时间:2016-08-09 09:00:30

标签: python-xarray

假设我的dataset类型为xarray.Dataset。我有一个名为name的维度(由DataArray中的所有Dataset共享,但我不认为这对此问题很重要,并且我想选择一个条目具体名称。我会这样做。

dataset.sel(name="lucifer")

但是假设我现在想要选择一个包含名称“lucifer”“judas”的子数据集。我想做点什么:

dataset.sel(name=["lucifer", "judas"])

因为这是我能想象到的最接近Pandas的语法。但这给了我一个错误。

InvalidIndexError: Reindexing only valid with uniquely valued Index objects

(顺便说一句,我从Xarray得到的每一个错误似乎都是这个确切的错误,我很高兴看到Xarray提供更多信息错误。)所以我的问题是,如何通过多个命名选择来自命名维度的值?假设命名值没有特定的排序,所以我不能使用切片作为例子。

1 个答案:

答案 0 :(得分:0)

如果您可以为尺寸使用唯一索引,那么您可以使用where而不是非唯一的坐标:

In [11]: ds=xr.Dataset({'a': [1,2,3], 'b': ('a', [4,5,5])})
In [14]: ds.where(ds.b==5, drop=True)
Out[14]: 
<xarray.Dataset>
Dimensions:  (a: 2)
Coordinates:
  * a        (a) int64 2 3
Data variables:
    b        (a) float64 5.0 5.0