Как использовать XArray для объединения специфи c netcdf4 - PullRequest
0 голосов
/ 29 января 2020

Справочная информация

У меня есть файлы netcdf4 за 2 года (1 файл netcdf4 в день). Я использую X-Array для объединения файлов, что упрощает их использование. Все файлы netcdf4 следуют одному и тому же соглашению об именах "YYYYMMDD_data_Nx.nc4.n c"

Вопрос

Однако что мне делать, если я хочу использовать только подмножество подмножество моих данных, например, файлы в период с 1 января по 31 января 2009 года.

То, что у меня сейчас есть

import xarray as xr

ds = xr.open_dataset('C:\\Users\\FILES\\*.nc')
df = ds
df.to_csv('export.csv', index=True)

1 Ответ

0 голосов
/ 29 января 2020

Решено

Я посмотрел страницу xarray readthedocs, увидел эту ошибку на странице open_mfdataset .

paths (str или sequence) - Либо строковый глобус в форме "path / to / my / files / *. N c", либо явный список файлов, которые нужно открыть. Пути могут быть заданы как строки или как пути пути. Если желательна конкатенация по нескольким измерениям, тогда пути должны быть вложенными списками списков (подробности см. В manual_combine). (Глобус строки будет расширен до одномерного списка.)

Таким образом, я прошел через список

Обновленный и рабочий код

import xarray as xr
from datetime import timedelta, date, datetime
import pandas as pd
import numpy as np


# **************
# Date Ranges
# **************
def daterange(start_date, end_date):
    for n in range(int((end_date - start_date).days)):
        yield start_date + timedelta(n)


# Start & End Date
start_date = date(2019, 1, 1)
end_date = date(2019, 1, 31)

# Empty List
filepath = 'C:\\Users\\USER\\FILES\\'
filelist = []

# Loop through all MERRA2 files and add the ones we need to the list
for single_date in daterange(start_date, end_date):
    YYYY = single_date.strftime("%Y")
    MM = single_date.strftime("%m")
    DD = single_date.strftime("%d")
    filename = filepath + YYYY + MM + DD + '_data_Nx.nc'

    filelist.append(filename)

# Merge via X-Array and export to csv
ds = xr.open_mfdataset(filelist, combine='by_coords')
df = ds.to_dataframe()
df.to_csv('export.csv', index=True)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...