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

Y. *_*eng 5 python pandas python-xarray

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

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
Run Code Online (Sandbox Code Playgroud)

当我使用xr.DataSet.from_dataframe, or 时df.to_xarray,我收到以下错误消息:

cannot handle a non-unique multi-index!

有人知道这里发生了什么吗?

sho*_*yer 9

数据框的多索引有重复的条目,xarray 无法将其拆分为多维数组——假设数组的元素不会具有唯一值。

您需要先删除索引中的重复条目,例如,如删除带有重复索引的熊猫行中所述:

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

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


kri*_*hna 8

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