当前位置: 首页 > 知识库问答 >
问题:

按变量选择netCDF文件中的数据

公冶峰
2023-03-14

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

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

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

我尝试了这样的东西来提取数据,但我知道这不是 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',:]

共有1个答案

江仲渊
2023-03-14

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

请在此处查看 xarray 与天气数据一起使用的示例

 类似资料:
  • 我正在搜索一个选项,以特定的变量值从NetCDF文件中选择数据。数据集包含时间、纬度和经度坐标以及一系列变量。其中一个变量是带有陆地/公海/海冰/湖泊特定值的掩码。由于公海由ds.mask=1表示,我只想提取位于mask=1的坐标(时间和空间)处的海面温度值。但是,我不想将其他坐标处的海水温度值设置为NaN,而是只保留ds.mask=1的那些坐标和变量值。我知道如何使用xarray进行选择和数据处

  • 我需要一些处理NetCDF文件的帮助。我总共有10个文件,分别用于10年。每年都有多个(相同的)变量,其中一些还涵盖每日值。在这里,我向您展示了一个结构示例: 我需要将数据作为模型的输入进行处理。我需要从10个NetCDF文件中提取的变量是SMB变量,它只是每个网格单元的年度值。所以我想构建一个如下形式的NetCDF: 我知道 ncks 命令已经只提取 SMB 变量,但我无法一次将其应用于多个文件

  • 我有一个很大的netCDF(.nc)文件文件夹,每个文件都有相似的名称。数据文件包含时间、经度、纬度和月降水量变量。目标是获得每个月X年的平均月降水量。因此,最终我会得到12个值,代表每个纬度和长纬度的X年平均月降水量。多年来,每个文件都位于同一位置。每个文件以相同的名称开头,以“date.nc”结尾,例如: 结尾是年月。目前为止我所知道的是: 我得到一个KeyError: ('time ','经

  • 我是SAS的新手,我想导入一个csv文件。此文件有一列包含以0开头的字符(例如,或),长度为5个字符。 当我用calc软件打开我的文件时,没有问题。但当我在SAS中导入时: 然后将该列视为数字列,因此删除第一个0。事后更改格式并不能解决我的问题。 是否有一种解决方案可以在读取csv之前指定格式导入,或者只有一种解决方案可以强制将所有列作为字符导入? 非常感谢!

  • 问题: 我在R中有一个代码,可以从单个Aqua Modis网络CDF文件中提取每月海面温度(SST)值(见下文)。但是,我在一个文件夹中有一批 59 个 Aqua Modis netCDF 文件。 目的: 我的目标是从所有59个netCDF文件的每个netCDF中提取变量的经度、纬度和SST,使用函数stack::raster()将它们转换为光栅文件,然后处理这些文件。 我的数据框有 650 行,

  • 问题内容: 我有一个表,用于存储目录信息(例如在文件系统中)。每个目录(命名节点)都有一个和一个。我想尽可能有效地检索完整路径。为此,我试图使以下查询正常工作,但是这些查询仅返回预期的第一行(实际上是最里面的目录)。任何人都可以帮助获取完整的结果集,以便也选择给定目录/节点的所有层次结构父级。 我目前正在尝试的查询: 选择: 选择: 样本数据: 所需的输出: 谁能帮忙吗? 问题答案: 您已经错过了