【问题标题】:Select data in netCDF file by variable通过变量选择netCDF文件中的数据
【发布时间】:2019-05-20 22:43:23
【问题描述】:

我正在尝试从基于变量的 netCDF 文件中提取天气数据。 .nc 文件包含 14 个变量和 2 个维度。我想提取与第一个变量的值相关的 14 个变量的所有数据。数据来自荷兰计量研究所,可以在here找到。

使用 netCDF4 模块在 Python 中加载数据,如下所示:

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'])

我想提取特定“站”的数据并将其放入 pandas DataFrame 以执行一些计算。

我尝试过这样的方法来提取数据,但我知道这不是 netCDF 文件的工作方式,但我不知道如何。

df = dataset['344',:,:,:,:,:,:,:,:,0,0,0,0,0]

总结性问题:有没有办法提取某个站的数据并将其放入 pandas 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',:]

【问题讨论】:

    标签: python pandas netcdf netcdf4


    【解决方案1】:

    是的,有办法。使用xarray 进行调查。它可以轻松处理更高维度的数据操作。过滤一维是相当简单的,然后有一个 .to_dataframe() 方法,它将把你的整个数据集放入一个具有多索引的 pandas 数据帧中。

    查看here 以获取 xarray 与天气数据一起使用的示例。

    【讨论】:

    • 谢谢,完美。我会为以后的用户添加解决方案代码。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-02-24
    • 1970-01-01
    • 2012-07-01
    • 2021-12-06
    相关资源
    最近更新 更多