С помощью xarray .Dataset.to_zarr можно записать xarray в .zarr
файл и добавить новые данные по измерению с помощью параметра append_dim
.
Однако, если координата новых данных для этого измерения уже существует, существующие данные не будут заменены. Скорее одна и та же координата появляется дважды в результирующем наборе дат.
Пример использования данных из здесь: сильный>
Здесь я записываю 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>
Кто-нибудь знает, можно ли заменить данные, если координата уже существует?