我想读取多个SST netcdf文件,并从每个文件中提取所选lat,lon范围内的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/
任何帮助都将非常感谢!!
答案 0 :(得分:1)
Pandas.DataFrame
以这种方式不支持三维数据。这个用例正是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()
答案 1 :(得分:0)
我建议使用CDO进行预处理,例如:
transaction.atomic()
您的系统上可能有一个打开的文件限制(256),在这种情况下,您需要将mergetime命令拆分为几个月的循环,提取该区域,然后在12个月的文件上执行最后的合并时间。端。