从Xarray中匿名选择数据

问题描述 投票:0回答:1

在 pandas 中我可以做类似的事情 -

pd.read_csv(path).loc[lambda df: df.col > 10, cols]

我想知道 Xarray 中是否有等效的东西?我试过了-

xr.open_dataset(path)["var"].sel(
  time=lambda da: ~((da.time.dt.month == 2) & (da.time.dt.day == 29))
)

xr.open_dataset(path)["var"].loc[
  lambda da: ~((da.time.dt.month == 2) & (da.time.dt.day == 29))
]

都不起作用。显然,我可以用两行来实现这一点,但是当我必须打开并处理类似的多个数据集时,在一行中读取代码会更清晰。

pandas dataframe select geospatial python-xarray
1个回答
0
投票

一种方法是使用布尔时间索引:

import pandas as pd
import xarray as xr

time = pd.date_range('2000-01-01', periods=365, freq='D')
x = xr.DataArray(range(365), dims='time', coords={'time': time})


x.sel(time=~((x.time.dt.month == 2) * (x.time.dt.day == 29)))

在具有

*
month==2
的布尔索引上使用
day==29
运算符,我可以生成一个新索引,其中只有重叠为
True
,然后使用
~
运算符进行反转。

不需要匿名函数。

© www.soinside.com 2019 - 2024. All rights reserved.