我有一个netCDF文件test.nc
,包含以下变量:
time
lat
lon
Lai_500m
FparLai_QC
所有变量(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
有谁知道如何实现我的数据选择?
Xarray的where
method适合这种操作:
qc_data = data.where((data['Lai_500m'] < 20) & (data['FparLai_QC'] == 0))
如果要删除仅对应于条件的假值的坐标标签,您可能还会发现drop
关键字很有用。