簡體   English   中英

Python:當我嘗試在日期之間插入 xarray 時,為什么會出現錯誤?

[英]Python: why do I get an error when I try to interpolate an xarray between dates?

我正在嘗試插入一個名為popxarray的值

pop

在此處輸入圖像描述

我正在使用 function xarray.interp

dates = pd.date_range('1990-01-01', '2020-01-01', freq='1Y')
popI = pop.interp(time=dates, kwargs={"fill_value": "extrapolate"})

但我收到以下錯誤

---------------------------------------------------------------------------
TypeError                                 Traceback (most recent call last)
<ipython-input-75-1393bc257da7> in <module>
----> 1 popI = pop.interp(time=dates, kwargs={"fill_value": "extrapolate"})

/usr/lib/python3/dist-packages/xarray/core/dataset.py in interp(self, coords, method, assume_sorted, kwargs, method_non_numeric, **coords_kwargs)
   3163         if method in ["linear", "nearest"]:
   3164             for k, v in validated_indexers.items():
-> 3165                 obj, newidx = missing._localize(obj, {k: v})
   3166                 validated_indexers[k] = newidx[k]
   3167 

/usr/lib/python3/dist-packages/xarray/core/missing.py in _localize(var, indexes_coords)
    561     indexes = {}
    562     for dim, [x, new_x] in indexes_coords.items():
--> 563         minval = np.nanmin(new_x.values)
    564         maxval = np.nanmax(new_x.values)
    565         index = x.to_index()

<__array_function__ internals> in nanmin(*args, **kwargs)

/usr/lib/python3/dist-packages/numpy/lib/nanfunctions.py in nanmin(a, axis, out, keepdims)
    319         # which do not implement isnan (gh-9009), or fmin correctly (gh-8975)
    320         res = np.fmin.reduce(a, axis=axis, out=out, **kwargs)
--> 321         if np.isnan(res).any():
    322             warnings.warn("All-NaN slice encountered", RuntimeWarning,
    323                           stacklevel=3)

TypeError: ufunc 'isnan' not supported for the input types, and the inputs could not be safely coerced to any supported types according to the casting rule ''safe''

您在Dataset上調用 interp ,它將始終將函數應用於所有數據變量。 您的數據變量之一是字符串數組mollewide 這不能插值。 因此,您可以將其設置為坐標:

popI = pop.set_coords('mollewide').interp(time=dates, kwargs={"fill_value": "extrapolate"})

或者您只能對popDensity數據變量進行操作:

popI = pop["popDensity"].interp(time=dates, kwargs={"fill_value": "extrapolate"})

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM