这是什么意思? xarray错误:无法处理非唯一的多索引

时间:2019-01-03 19:07:25

标签: python pandas python-xarray

我正在尝试将数据框转换为xarray。头是这样的:

z RockClass SP_SANDPCT_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
当我使用xr.DataSet.from_dataframe或df.to_xarray时,出现以下错误消息:

cannot handle a non-unique multi-index!

有人知道这是怎么回事吗?

3 个答案:

答案 0 :(得分:1)

它的含义恰恰是它的意思:数据框的多索引有重复的条目,而xarray无法将其拆开成多维数组-假设数组的元素将没有唯一值。

您需要首先删除索引中重复的条目,例如,如Remove rows with duplicate indices (Pandas DataFrame and TimeSeries)中所述:

  • 最简单的选择是删除重复项,例如df[~df.index.duplicated()]
  • 您还可以使用分组操作,例如,计算均值:df.gropuby(level=df.index.names).mean()

完成此操作后,就可以安全地将数据帧转换为xarray。

答案 1 :(得分:1)

在这种情况下,df.columns.is_unique将返回False。要确定哪个重复,您可以通过df.columns.value_counts()查看每一对列的频率。为了使多索引工作,所有元组都应显示1

答案 2 :(得分:0)

通过to_xarray将csv转换为netcdf时,重要的是头的排列必须与鳕鱼中的排列相等,否则得到error: cannot handle a non-unique multi-index