如何在Xarray时间序列数据中筛选指定日期?
正确的xarray DataArray日期索引方法
先明确你遇到的错误根源:
- 前两种方法报错是因为你用来做比较的
juld变量,和DataArray自身juld维度的长度不匹配(布尔数组大小1070 vs 维度长度1253),应该直接调用DataArray自带的维度值来做判断。 - 第三种方法用
isel是按位置索引,你写的1997-5-1会被Python计算成整数1991,远超过juld维度的长度1253,必然触发越界错误。
下面是两种可靠的索引方式:
方法一:用sel按标签索引(推荐)
sel是xarray专门为维度标签(比如日期、字符串键)设计的索引方法,直接传入目标日期即可,无需关心日期在维度中的位置:
# 无论juld维度是字符串还是datetime64类型,都能直接用 wk_conc_avgs.sel(juld='1997-05-01') # 批量索引多个日期的话,传列表就行 wk_conc_avgs.sel(juld=['1997-05-01', '1997-05-08'])
方法二:基于DataArray自身维度的布尔索引
如果坚持用布尔索引,必须使用DataArray自己的juld维度数据做比较,而非外部变量:
# 字符串格式日期匹配 wk_conc_avgs[wk_conc_avgs.juld == '1997-05-01'] # datetime64格式日期匹配(需确保juld维度是datetime类型) import numpy as np wk_conc_avgs[wk_conc_avgs.juld == np.datetime64('1997-05-01')]
额外建议:如果你的juld维度还是字符串类型,先转成datetime64类型能避免很多类型匹配问题:
import xarray as xr wk_conc_avgs['juld'] = xr.to_datetime(wk_conc_avgs['juld'])
内容的提问来源于stack exchange,提问作者NorthWind4721
相关产品推荐
相关产品推荐

