Выберите набор данных xarray на основе месяца - PullRequest
1 голос
/ 21 марта 2020

У меня есть набор данных xarray со следующей информацией:

Coordinates:
lat: float64 (192)
lon: float64 (288)
time: object (1200) (monthly data)

Data Variables:
tas: (time, lat, lon)

Теперь я хочу значения tas для указанного c месяца, например, я хочу новый набор данных со всеми записями месяца января.

Выходной набор данных будет выглядеть следующим образом:

Coordinates:
lat: float64 (192)
lon: float64 (288)
time: object (100) (monthly data of January)

Data Variables:
tas: (time, lat, lon)

Я попробовал способ, подобный этому, который я использовал ранее:

jan = pd.date_range(start='1979-01-01', periods=41, freq='AS-JAN').date.tolist()
gs_jan = gs.sel(time = jan)

Но это не будет работать в моем случае, потому что даты для Я в 0001-0100 году, и pandas не поддерживает дату в этом диапазоне!

1 Ответ

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

Как правило, для анализа данных временных рядов, таких как этот, вы должны следовать подходу группового разделения с использованием метода da.groupby() xarray (http://xarray.pydata.org/en/stable/groupby.html).

В вашем В этом случае я бы предложил попробовать:

# Use .groupby('time.month') to organize the data into months
# then use .groups to extract the indices for each month
month_idxs=gs.groupby('time.month').groups

# Extract the time indices corresponding to all the Januarys 
jan_idxs=month_idxs[1]

# Extract the january months by selecting 
# the relevant indices
gs_jan=gs.isel(time=jan_idxs)

Надеюсь, это поможет!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...