J'essaie de convertir un Dataframe à 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 eu le message d'erreur suivant:
cannot handle a non-unique multi-index!
Quelqu'un sait ce qui se passe ici?
L'index multi-index de votre cadre de données contient des entrées en double, que Xarray ne peut pas inscrire à une matrice multidimensionnelle - les éléments des matrices hypothétiques n'auraient pas une valeur unique.
Vous devez enlever les entrées dupliquées dans l'index d'abord, par exemple, comme décrit dans supprimer des lignes avec des indices en double (Pandas Dataframe et ELYERIES) :=:
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 l'arrangement des têtes est égal à l'arrangement de votre morue, sinon vous obtenez le error: cannot handle a non-unique multi-index
.
Dans ce cas df.columns.is_unique
Retournerait False
. Pour identifier lequel on se répète, vous pouvez voir la fréquence de chaque paire de colonnes par df.columns.value_counts()
. Pour le fonctionnement multididexing, il devrait indiquer 1
Pour tous les tuples.