`DataTree.map_over_datasets` behavior can be obscure sometimes
Los mantenedores suelen responder en 1 día
Evaluación
- Dificultad
- 2/5
- Tiempo estimado
- 1-3 horas
- Aptitud para principiantes
- 78/100
- Tipo de issue
- Documentación
- Claridad
- Bien especificado
- Estado de actividad
- Activo
- Área
- documentation
Línea de trabajo
Empieza por la documentación de DataTree.map_over_datasets enlazada en el issue y compara su descripción de func con el comportamiento de DatasetView en xarray/core/datatree.py. Aclara que el callback recibe una vista de solo lectura y explica cuándo es necesario llamar a .copy() para operaciones como interpolate_na. Se considerará terminado cuando la documentación deje claros el comportamiento y la solución alternativa para los lectores.
Escrito por el modelo de indexación a partir del texto del issue.
Descripción
What is your issue?
Consider this code:
import numpy as np
import pandas as pd
import xarray as xr
da = xr.DataArray(
data=[1., np.nan, 3.],
coords={"datetime": pd.date_range("2026-10-26", periods=3, freq="D")},
name="up",
)
dtree = xr.DataTree(dataset=da.to_dataset())
dtree.map_over_datasets(lambda ds: ds.interpolate_na(dim="datetime"))
AttributeError: DatasetView objects are not to be initialized directly.
This will not run because map_over_datasets will iterate over DatasetView objects, even though the documentation says explicitly that the parameter func expects Dataset:
https://docs.xarray.dev/en/latest/generated/xarray.DataTree.map_over_datasets.html
But if you dig in xarray/core/datatree.py and have a look at DatasetView, this is stated in an exception that I didn't encounter:
def __setitem__(self, key, val) -> None:
raise AttributeError(
"Mutation of the DatasetView is not allowed, please use `.__setitem__` on the wrapping DataTree node, "
"or use `dt.to_dataset()` if you want a mutable dataset. If calling this from within `map_over_datasets`,"
"use `.copy()` first to get a mutable version of the input dataset."
)
So the solution is to run lambda ds: ds.copy().interpolate_na(dim="datetime"). Not intuitive at all, expecially if one has been using map_over_datasets with other functions without a problem. Shouldn't this be more clear in the documentation?
- Lenguaje dominante
- Python
- Estrellas
- 4.2k
- Forks
- 1.4k
- Merge medio
- 2 d 10 h
- PR fusionados (30 d)
- 115
Preparar el entorno
Inicia el contenedor de desarrollo del proyecto en tu navegador, con tu propia cuenta de GitHub.
- Sin Dockerfile ni archivo de Docker Compose
- Tiene una plantilla de pull request
- Leer la guía de contribución
Primeros pasos
- Lee el issue completo y luego la guía de contribución del proyecto.
- Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
- Haz un fork del repositorio y trabaja en una rama.
- Abre un pull request que haga referencia al número del issue.
Más de pydata/xarray
-
Comparing attrs that contain a dict of NumPy arrays raises ValueError in identical / assert_identicalPosiblemente ocupada @SohamXYZDev la tomó hace 11 días. Abiertobug needs triage
Dificultad 2/5 1-3 horas Aptitud para principiantes 73/100
pydata/xarray#11777 · 1 comentario ·
Los mantenedores suelen responder en 1 día
-
RangeIndex` with datetime64 bounds cannot be printed (`Unknown format code 'g'`)Posiblemente ocupada @d-chambers la tomó hace 42 días. Abiertobug
Dificultad 2/5 1-3 horas Aptitud para principiantes 68/100
pydata/xarray#11598 · 3 comentarios ·
Los mantenedores suelen responder en 1 día
-
DataTree constructor error message says dict even though dict is not acceptedPosiblemente ocupada @aryansk la tomó hace 81 días. Abiertobug contrib-good-first-issue topic-DataTree topic-error reporting
Dificultad 2/5 1-3 horas Aptitud para principiantes 72/100
pydata/xarray#11514 · 1 comentario ·
Los mantenedores suelen responder en 1 día
-
Use `zarr.Array.async_array`Posiblemente ocupada @0xrutabaga la tomó hace 26 días. Abiertotopic-zarr
Dificultad 2/5 1-3 horas Aptitud para principiantes 72/100
Los mantenedores suelen responder en 1 día
-
needs triage
Dificultad 1/5 Menos de una hora Aptitud para principiantes 65/100
pydata/xarray#10800 · 1 comentario ·
Los mantenedores suelen responder en 1 día
Todos los issues de pydata/xarray
Issues similares
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 66/100
microsoft/agent-framework#9946 ·
Los mantenedores suelen responder en 1 día
-
Dificultad 1/5 Menos de una hora Aptitud para principiantes 88/100
btclib-org/btclib-node#2198 ·
Los mantenedores suelen responder en 1 día
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 62/100
Los mantenedores suelen responder en 3 días
-
Remove the em dashes from the skill smart-account referencePosiblemente ocupada @Vamsi-2581 la tomó hoy. Abiertoagent-ready area: docs documentation good first issue
Dificultad 2/5 1-3 horas Aptitud para principiantes 74/100
Soneso/stellar-agent-wallet#541 · 2 comentarios ·
Los mantenedores suelen responder en 1 día
-
good first issue
Dificultad 2/5 1-3 horas Aptitud para principiantes 75/100
Los mantenedores suelen responder en 1 día