Xarray裁剪Sentinel-2影像遇KeyError,含NaT值如何解决?
移除Xarray数据集Time维度的NaT值并修复切片错误
问题根源
你的KeyError本质是Time维度存在**NaT(Not a Time)**无效值,即使排序、去重后,NaT仍会干扰基于标签的.loc切片逻辑,导致无法解析索引。
两种有效移除NaT的方法
方法1:使用dropna直接删除无效时间条目
直接沿Time维度过滤掉包含NaT的记录:
da = da.dropna(dim='time', how='any')
- 参数说明:
dim='time'指定检查Time维度,how='any'表示只要该维度坐标为NaT,就删除对应的整个时间切片。
方法2:布尔索引精准筛选有效时间
通过生成布尔掩码筛选非NaT的时间条目:
# 生成非NaT的布尔掩码,再筛选数据 valid_times = da.time.notnull() da = da.sel(time=valid_times)
验证与后续操作
处理完成后,可通过以下代码确认NaT已移除:
print(da.time.values)
确认Time维度无无效值后,再执行原有的AOI切片代码即可正常运行:
aoi = da.loc[..., y_utm + m_buffer:y_utm - m_buffer, x_utm - m_buffer:x_utm + m_buffer]
内容的提问来源于stack exchange,提问作者James Cree
相关产品推荐
相关产品推荐

