Я пытаюсь извлечь данные о погоде из файла netCDF на основе переменной. Файл .nc содержит 14 переменных и 2 измерения. Я хотел бы извлечь все данные из 14 переменных, связанных со значением первой переменной. Данные получены из Голландского метрологического института и могут быть найдены здесь .
Данные загружаются в Python с использованием модуля netCDF4 следующим образом:
import netCDF4 as nc
filename = r'path/file.nc'
dataset = nc.Dataset(filename)
Печатные переменные и размеры:
dataset.variables.keys()
Out[67]: odict_keys(['station', 'time', 'lat', 'lon', 'DDVEC', 'FHVEC', 'TG', 'RH', 'UG', 'EV24', 'PG', 'iso_dataset', 'product', 'projection'])
dataset.dimensions.keys()
Out[68]: odict_keys(['station', 'time'])
Я хотел бы извлечь данные для конкретной «станции» и поместить их в пандусный фрейм данных для выполнения некоторых вычислений.
Я пытался что-то вроде этого, чтобы извлечь данные, однако я знаю, что это не так, как работают файлы netCDF, но я не могу понять, как.
df = dataset['344',:,:,:,:,:,:,:,:,0,0,0,0,0]
Краткий вопрос: есть ли способ извлечь данные для определенной станции и поместить их в панду DataFrame?
РЕШЕНИЕ
import pandas as pd
import xarray as xr
# Open netCDF file and convert to dataframe
open_netcdf = xr.open_dataset(filename)
dataset = open_netcdf.to_dataframe()
# Select data from a tuple index based on station number: 391
df = dataset.iloc[dataset.index.get_level_values(0) == '391',:]