我有一个包含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个不同的变量。
我的目标是创建一个NetCDF,其中x、y和t作为具有单个变量的维度。
我设法做到了这一点,但我觉得我是以一种非常复杂的方式做到的。
我的解决方案是使用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个时间步,但我会遇到麻烦,与数万或数千个时间步。
谢谢你,谢谢!
1条答案
按热度按时间qzlgjiam1#
假设你有一个框架
df
:你可以设置x,y作为索引,将其转换为xarray,合并变量var_t1...并将
new_times
设置为时间维度的坐标: