drop_sel не принимает срез - PullRequest
       5

drop_sel не принимает срез

4 голосов
/ 28 февраля 2020

Скажем, у меня есть массив данных xarray. Одним из измерений является измерение времени:

import numpy as np
import xarray as xr
import pandas as pd

time = pd.date_range('1980-01-01', '2017-12-01', freq='MS')
time = xr.DataArray(time, dims=('time',), coords={'time':time})

da = xr.DataArray(np.random.rand(len(time)), dims=('time',), coords={'time':time})

Теперь, если я хочу только годы с 1990 по 2000 год, то я могу легко это сделать:

da.sel(time=slice('1990', '2000'))

Но что, если я хотите сбросить в эти годы? Мне нужны данные за все годы , за исключением тех.

da.drop_sel(time=slice('1990', '2000'))

не удается с

TypeError: unhashable type: 'slice'

Что происходит? Какой правильный способ сделать это?

В данный момент я создаю новый массив данных:

tdrop = da.time.sel(time=slice('1990', '2000'))
da.drop_sel(time=tdrop)

Но это кажется излишне запутанным.

1 Ответ

2 голосов
/ 15 марта 2020

Как насчет использования where с необязательным параметром drop, установленным на True, для фильтрации по году? Используя приведенный ниже пример, данные с 1990 <= year <= 2000 будут удалены.

da = da.where((da["time.year"] < 1990) | (da["time.year"] > 2000), drop=True)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...