【发布时间】:2020-12-17 11:29:08
【问题描述】:
使用xarray.Dataset.to_zarr,可以将xarray 写入.zarr 文件并使用append_dim 参数沿维度追加新数据。
但是,如果该维度的新数据坐标已经存在,则不会替换现有数据。相反,相同的坐标在结果日期集中出现了两次。
使用来自here的数据的示例:
在这里,我将 2 个数据集写入同一个 .zarr 文件。数据集沿space 维度附加。两个数据集包含相同的空间坐标"IL"
ds_A = xr.DataArray(
np.random.rand(4, 2),
[
("time", pd.date_range("2000-01-01", periods=4)),
("space", ["IA", "IL"]),
],
).to_dataset(name="measurements")
ds_B = xr.DataArray(
np.random.rand(4, 2),
[
("time", pd.date_range("2000-01-01", periods=4)),
("space", ["IL", "NY"]),
],
).to_dataset(name="measurements")
ds_A.to_zarr("weather.zarr", append_dim="space")
ds_B.to_zarr("weather.zarr", append_dim="space");
读取文件时,第二个数据集并没有覆盖"IL"坐标的数据,而是创建了一个新数据集:
xr.open_zarr("weather.zarr")
<xarray.Dataset>
Dimensions: (space: 4, time: 4)
Coordinates:
* space (space) <U2 'IA' 'IL' 'IL' 'NY'
* time (time) datetime64[ns] 2000-01-01 2000-01-02 ... 2000-01-04
Data variables:
measurements (time, space) float64 dask.array<chunksize=(4, 2), meta=np.ndarray>
这将是期望的结果:
<xarray.Dataset>
Dimensions: (space: 3, time: 4)
Coordinates:
* space (space) <U2 'IA' 'IL' 'NY'
* time (time) datetime64[ns] 2000-01-01 2000-01-02 ... 2000-01-04
Data variables:
measurements (time, space) float64 dask.array<chunksize=(3, 2), meta=np.ndarray>
有人知道如果坐标已经存在,是否可以替换数据?
【问题讨论】:
标签: python dask python-xarray zarr