Xarray带MultiIndex坐标时如何用drop_sel删除2月29日闰日
报错原因
你调用drop_sel时直接传入元组(2,29)会被xarray自动解包,识别为要删除monthday维度下两个独立标签2和29,但你的monthday维度所有标签都是(月,日)格式的MultiIndex元组,不存在单独的数值标签,因此触发KeyError。
解决方法
方法1:直接用drop_sel正确传参
只需要把要删除的MultiIndex标签放在列表中即可,避免元组被自动解包:
da = da.drop_sel(monthday=[(2, 29)])
方法2:先命名层级再筛选(可读性更高)
如果后续还要频繁操作月、日维度,建议先给MultiIndex的两个层级命名,再用布尔筛选排除闰日:
# 给monthday的两个层级重命名为month、day da = da.assign_coords( monthday=da.monthday.rename_levels(['month', 'day'], level=[0, 1]) ) # 筛选掉2月29日的条目 da = da.sel(monthday=~((da.month == 2) & (da.day == 29)))
内容的提问来源于stack exchange,提问作者Yongwu Xiu
相关产品推荐
相关产品推荐

