向二维(x,y)NetCDF文件添加“时间”维度的有效方法,该文件的变量在不同时间代表相同的变量

问题描述 投票:0回答:0

我有包含 x 和 y 坐标的 CSV 文件,以及三个不同时间步骤的变量值,如下所示:

x, y, var_t1, var_t2, var_t3,
1, 1, 8,      8,      6
1, 2, 6,      1,      2
2, 1, 5,      3,      7
2, 2, 7,      2,      6

我学会了用以下方法创建 NetCDF 文件:

import xarray as xr
xr.Dataset.from_dataframe(df.set_index(['x', 'y'])).to_netcdf('filename.nc')

这会生成一个以 x 和 y 为维度的 NetCDF,并且我得到 3 个不同的变量。

我的目标是使用单个变量创建一个以 x、y 和 t 作为维度的 NetCDF。

我设法实现了这一点,但我觉得我以一种非常复杂的方式做到了。

我的解决方案是使用 CSV 文件并将其长度延长 3 倍,同时添加“t”列来表示时间步长:

x, y, t, var_t1, var_t2, var_t3,
1, 1, 0, 8,      0,      0
1, 2, 0, 6,      0,      0
2, 1, 0, 5,      0,      0
2, 2, 0, 7,      0,      0
1, 1, 1, 0,      8,      0
1, 2, 1, 0,      1,      0
2, 1, 1, 0,      3,      0
2, 2, 1, 0,      2,      0
1, 1, 2, 0,      0,      6
1, 2, 2, 0,      0,      2
2, 1, 2, 0,      0,      7
2, 2, 2, 0,      0,      6

现在当我申请时

import xarray as xr
xr.Dataset.from_dataframe(df.set_index(['x', 'y', 't'])).to_netcdf('filename.nc')

我得到一个具有 x、y、t 维度的 NetCDF,并且每个不同时间都有一个变量(即当 t = 1 时,只有 var_t2 != 0)。

是否有一种方法可以以更简单的方式实现这一目标,以防我将来遇到类似的问题?只需 3 个时间步长就可以轻松完成,但如果有数十或数千个时间步长,我就会遇到麻烦。

谢谢!

python csv netcdf python-xarray dimensions
© www.soinside.com 2019 - 2024. All rights reserved.