我有一系列以CSV形式呈现的月度分格数据集。我想读取它们,添加一些维度,然后将其写入netcdf格式。过去我使用过xarray (xray) ,并且非常满意,所以我计划在这个任务中继续使用它。
我可以很容易地通过以下方式将它们转换成2D DataArray:
但是,当我试图添加另一个维度来传达关于时间的信息(所有数据来自同一年/月)时,事情开始变得糟糕起来。
我尝试了两种方法来解决这个问题:
1)将我的输入数据扩展为m x n x 1,例如:
这对于创建DataArray来说是可以的,但是当我试图转换为数据集(以便能够写入netCDF)时,会出现一个关于“ValueError:坐标对象必须是一维”的错误。
2)我尝试过的第二种方法是将我的DataArray转换为DataFrame,将索引设置为['lat','lng','time'],然后使用
有人知道如何获得具有月度“时间”维度的数据集吗?
我可以很容易地通过以下方式将它们转换成2D DataArray:
data = np.ones((360,720))
lats = np.arange(-89.75, 90, 0.5) * -1
lngs = np.arange(-179.75, 180, 0.5)
coords = {'lat': lats, 'lng':lngs}
da = xr.DataArray(data, coords=coords)
但是,当我试图添加另一个维度来传达关于时间的信息(所有数据来自同一年/月)时,事情开始变得糟糕起来。
我尝试了两种方法来解决这个问题:
1)将我的输入数据扩展为m x n x 1,例如:
data = np.ones((360,720))
lats = np.arange(-89.75, 90, 0.5) * -1
lngs = np.arange(-179.75, 180, 0.5)
coords = {'lat': lats, 'lng':lngs}
data = data[:,:,np.newaxis]
然后我按上述步骤进行操作,将coords更新为包含第三个维度的值。
lats = np.arange(-89.75, 90, 0.5) * -1
lngs = np.arange(-179.75, 180, 0.5)
coords = {'lat': lats, 'lng':lngs}
coords['time'] = pd.datetime(year, month, day))
da = xr.DataArray(data, coords=coords)
da.to_dataset(name='variable_name')
这对于创建DataArray来说是可以的,但是当我试图转换为数据集(以便能够写入netCDF)时,会出现一个关于“ValueError:坐标对象必须是一维”的错误。
2)我尝试过的第二种方法是将我的DataArray转换为DataFrame,将索引设置为['lat','lng','time'],然后使用
xr.Dataset.from_dataframe()
返回到数据集。我已经尝试过这个方法,但是它需要20分钟以上才能完成,所以我中途就终止了进程。有人知道如何获得具有月度“时间”维度的数据集吗?