假设我的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提供更多信息错误。)所以我的问题是,如何通过多个命名选择来自命名维度的值?假设命名值没有特定的排序,所以我不能使用切片作为例子。
答案 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