4
votes

Qu'est-ce que ça veut dire? erreur xarray: impossible de gérer un multi-index non unique

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?


1 commentaires

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.


3 Réponses :


4
votes

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) :

  • Le choix le plus simple serait de supprimer les doublons, par exemple, df[~df.index.duplicated()
  • Vous pouvez également utiliser une opération groupby, par exemple, pour calculer la moyenne: 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.


0 commentaires

0
votes

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 .


0 commentaires

1
votes

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.


0 commentaires