python - Python - 基于标准的 netCDF 文件选择
问题描述
我有一个 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
方法很适合这种操作:
qc_data = data.where((data['Lai_500m'] < 20) & (data['FparLai_QC'] == 0))
drop
如果您想删除仅对应于条件的 False 值的坐标标签,您可能还会发现该关键字很有用。
推荐阅读
- javascript - 例外:未定义不是对象(评估“navigation.navigate”)
- javascript - 如何制作从大写变为小写的单个按钮
- go - 为什么 path = os.Getenv("GOMOD"), path = "" 在项目中?
- apache-kafka - Flink 表接收器不适用于 debezium-avro-confluent 源
- windows - 使用 WM_MOUSEMOVE/WM_NCMOUSEMOVE 更新指定区域
- sql-server - Snowflake ODBC 驱动程序和 SQL Server Polybase
- javascript - 计算两个变量字符串之间的字数
- python - 当访问一个方法中更新的类变量时,它的更新值不会在scrapy spider的另一个方法中被拾取
- excel - 如何使用 VBA 将 Outlook 邮件中的“收件人:”字段与预定义的邮件 ID 进行比较?
- r - 如何根据主数据框中的选定特征生成动态汇总表