使用xarray.interp按日期插值时出现TypeError错误的原因
错误原因分析
这个错误的核心是datetime类型坐标与numpy数值型缺失值处理函数不兼容,具体拆解如下:
你传入的
dates是pandas的DatetimeIndex,底层数据类型为datetime64,而np.isnan函数仅支持处理数值型数据(如float、int),无法识别时间类型的缺失值NaT,直接导致类型不匹配报错。从错误栈可见,xarray内部的
_localize函数在处理插值坐标时,调用np.nanmin(new_x.values)获取插值时间范围的最小值。对于datetime数组,np.nanmin会返回NaT(哪怕你的dates无缺失值,内部处理逻辑也可能生成临时NaT),随后代码用np.isnan(res)判断结果是否为缺失值,自然触发类型错误。另外,
fill_value="extrapolate"是传递给scipy插值函数的参数,但在datetime坐标的线性插值场景下,scipy的插值逻辑并不支持这种外推配置,这可能导致xarray内部流程偏离预期,进一步触发了调用np.isnan的错误分支。
内容的提问来源于stack exchange,提问作者emax
相关产品推荐
相关产品推荐

