docs: def interp_na(self, dim=None, use_coordinate=True, method='linear', limit=None,
                **kwargs):
      '''Interpolate values according to different methods.'''
  
      if dim is None:
          raise NotImplementedError('dim is a required argument')
  
      if limit is not None:
          valids = _get_valid_fill_mask(self, dim, limit)
  
      # method
      index = get_clean_interp_index(self, dim, use_coordinate=use_coordinate,
                                     **kwargs)
      interp_class, kwargs = _get_interpolator(method, **kwargs)
      interpolator = partial(func_interpolate_na, interp_class, **kwargs)
  
      with warnings.catch_warnings():
          warnings.filterwarnings('ignore', 'overflow', RuntimeWarning)
          warnings.filterwarnings('ignore', 'invalid value', RuntimeWarning)
          arr = apply_ufunc(interpolator, index, self,
                            input_core_dims=[[dim], [dim]],
                            output_core_dims=[[dim]],
                            output_dtypes=[self.dtype],
                            dask='parallelized',
                            vectorize=True,
                            keep_attrs=True).transpose(*self.dims)
  
      if limit is not None:
          arr = arr.where(valids)
  
      return arr