我有一个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
有人知道如何实现我的数据选择吗?
答案 0 :(得分:2)
Xarray的where
method对这种操作有好处:
qc_data = data.where((data['Lai_500m'] < 20) & (data['FparLai_QC'] == 0))
如果要删除仅与条件的False值相对应的坐标标签,您可能还会发现drop
关键字很有用。
答案 1 :(得分:1)