我有包含 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 个时间步长就可以轻松完成,但如果有数十或数千个时间步长,我就会遇到麻烦。
谢谢!