0

我想读取多个 SST netcdf 文件,并从每个文件中提取选定纬度、经度范围内的 SST 数据,然后将这些数据存储在三维熊猫数据框中。读取后关闭每个 netcdf 以节省内存。

我想以一个包含一年的日常数据的数据框结束。

我已经用 NetCDF4 读取了一个文件并存储了每个变量,但这是我所知道的。

my_file = 'C:/Users/lisa/Desktop/Sean/20160719000127-UoS-L2i-SSTskin-ISAR_002-D054_PtA-v01.0-fv01.5.nc'
fh = netCDF4.Dataset(my_file, mode='r')
lon = fh.variables['lon'][:]
lat = fh.variables['lat'][:]
time = fh.variables['time'][:]
sst = fh.variables['sea_surface_temperature'][:]

数据来自以下地址的 2016 年 OPeNDAP。

http://www.ifremer.fr/opendap/cerdap1/ghrsst/l4/saf/odyssea-nrt/data/

任何帮助将非常感激!!

4

2 回答 2

2

Pandas.DataFrame不支持这种方式的3维数据。这个用例正是xarray开发的原因。

做你想做的事情xarray

import xarray as xr

ds = xr.open_mfdataset(['file1.nc', 'file2.nc', 'file3.nc'])

这会将您的文件连接在一起并将它们全部放在一个xarray.Dataset. 将 1d 或 2d 数据输入 Pandas 非常容易

ds.sel(lat=36.0, lon=42.5).to_dataframe()
于 2017-07-20T17:29:25.463 回答
0

我建议使用 CDO 进行预处理,例如

cdo mergetime 2016*-UoS-L2i-SSTskin-ISAR_002-D054_PtA-v01.0-fv01.5.nc merged.nc
cdo sellonlatbox,lon1,lon2,lat,lat2 merged.nc box_2016.nc

您的系统上可能有一个打开文件限制 (256),在这种情况下,您需要将 mergetime 命令拆分为几个月的循环,提取该区域,然后在最后对 12 个每月文件执行最终合并时间。

于 2018-02-22T08:54:19.267 回答