【问题标题】:Read multiple .nc files into a 3D pandas dataframe python将多个 .nc 文件读入 3D 熊猫数据框 python
【发布时间】:2018-02-22 16:54:19
【问题描述】:

我想读取多个 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/

任何帮助将不胜感激!

【问题讨论】:

  • 您可能还想查看NetCdf Operators,以便在使用 python 之前对 netcdf 文件进行一些预处理。它要快得多,如果您要处理大量数据,NCO 肯定会为您提供很多帮助。 Emilo E.

标签: python netcdf netcdf4 sst


【解决方案1】:

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()

【讨论】:

    【解决方案2】:

    我建议使用 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 个每月文件执行最终合并时间结束。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-11-11
      • 1970-01-01
      • 1970-01-01
      • 2018-07-14
      • 2016-12-25
      • 1970-01-01
      • 1970-01-01
      • 2017-11-03
      相关资源
      最近更新 更多