Индексирование непрерывных временных рядов из набора данных / datarray - PullRequest
0 голосов
/ 11 апреля 2019

Я хочу выбрать данные из моего набора данных для соответствующих значений в моем временном ряду.Даты во временном ряду не непрерывны.Поэтому я не могу использовать слайс с sel.Вот как выглядит индекс моего набора данных

ds.indexes
>longitude:Float64Index
>time: DatetimeIndex

Для фрейма данных Pandas, если бы у меня был индекс на основе времени, я мог бы просто использовать индексирование на основе меток, например

df.loc[['1979-01-09 00:00:00', '1979-01-09 06:00:00']]

Индексирование Xarray основано на Pandas, но я не знаю, как реализовать вышеуказанный подход

ds.var1.loc[['1979-01-09 00:00:00', '1979-01-09 06:00:00']]
>KeyError: "not all values found in index 'time'"

Я также пытался:

ds.var1.sel(dict(time=('1979-01-09 00:00:00', '1979-01-09 06:00:00')))
>TypeError: Cannot convert input [('1979-01-09 00:00:00', '1979-01-09 06:00:00')] of type <class 'tuple'> to Timestamp

Было бы здорово узнать, как яможет сделать эту работу как с .loc, так и с sel методом

1 Ответ

1 голос
/ 13 апреля 2019

Я думаю, вам нужно сначала преобразовать строки в объекты даты и времени. pandas.to_datetime должен сделать трюк:

import pandas as pd
import xarray as xr

times = pd.date_range('2000-01-01', periods=3, freq='MS')
da = xr.DataArray(range(3), coords=[times], dims=['time'], name='a')
result = da.sel(time=pd.to_datetime(['2000-01-01', '2000-03-01']))
...