我有一个 netCDF 文件 test.nc
,其中包含以下变量:
时间
纬度
长
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))
如果您想删除仅与条件的 False 值相对应的坐标标签,您可能还会发现 drop
关键字很有用。
关于Python - netCDF 文件上基于标准的选择,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54868221/