J'essaye de convertir un dataframe en xarray. La tête est comme ceci:
z Class DA x y iline xline idz 2 651 289 1455.0 2.0 0.62239 2345322.0 76720.0 290 1460.0 0.0 0.46037 2345322.0 76720.0 291 1465.0 4.0 0.41280 2345322.0 76720.0 292 1470.0 0.0 0.39540 2345322.0 76720.0 293 1475.0 2.0 0.61809 2345322.0 76720.0
quand j'utilise xr.DataSet.from_dataframe
, ou df.to_xarray
, j'ai l'erreur suivante message:
ne peut pas gérer un multi-index non unique!
Quelqu'un sait ce qui se passe ici?
3 Réponses :
Le multi-index de votre bloc de données a des entrées en double, que xarray ne peut pas décompresser dans un tableau multidimensionnel - les éléments des tableaux hypothétiques n'auraient pas de valeurs uniques.
Vous devez d'abord supprimer les entrées dupliquées dans l'index, par exemple, comme décrit dans Supprimer les lignes avec des index en double (Pandas DataFrame et TimeSeries) :
df[~df.index.duplicated()
df.gropuby(level=df.index.names).mean()
Une fois que vous avez fait cela, vous pouvez convertir en toute sécurité le dataframe en xarray.
Lorsque vous convertissez csv en netcdf via to_xarray
, il est important que la disposition des têtes soit égale à la disposition dans votre cod, sinon vous obtenez l'erreur : impossible de gérer un non-unique multi-index
.
Dans ce cas, df.columns.is_unique
renverrait False
. Pour identifier celui qui se répète, vous pouvez voir la fréquence de chaque paire de colonnes par df.columns.value_counts ()
. Pour que la multi-indexation fonctionne, il doit afficher 1
pour tous les tuples.
Vous avez des valeurs en double dans la colonne que vous utilisez pour l'indexation. Trouvez donc une autre colonne que vous pouvez utiliser comme source d'index, supprimez les doublons OU ajoutez une nouvelle colonne avec un ID unique, puis convertissez ou réindexez.