首页 > 解决方案 > Python - 基于标准的 netCDF 文件选择

问题描述

我有一个 netCDF 文件test.nc,其中包含以下变量:

所有变量(除了time, lat, lon)都具有 1523, 120, 120 形状。

现在我想只选择已标记FparLai_QC的数据具有高质量和Lai_500m<20 的数据。

为了做到这一点,我尝试过:

os.chdir(inbasedir)
data = xr.open_dataset('MCD15A3H.006_500m_aid0001.nc')
qc_data = data.loc[(dict(var='Lai_500m') < 20) &
                  (dict(var='FparLai_QC') == 0) ]

和:

os.chdir(inbasedir)
data = xr.open_dataset('MCD15A3H.006_500m_aid0001.nc')
qc_data = data.loc[(data['Lai_500m'] < 20) &
                  (data['FparLai_QC'] == 0) ]

他们都返回了相同的错误:

TypeError: can only lookup dictionaries from Dataset.loc

有谁知道如何实现我的数据选择?

标签: pythonnetcdfpython-xarray

解决方案


Xarray 的where方法很适合这种操作:

qc_data = data.where((data['Lai_500m'] < 20) & (data['FparLai_QC'] == 0))

drop如果您想删除仅对应于条件的 False 值的坐标标签,您可能还会发现该关键字很有用。


推荐阅读