我正在尝试将数据框转换为xarray。头是这样的:
z RockClass SP_SANDPCT_DA x y
iline xline idz
当我使用xr.DataSet.from_dataframe或df.to_xarray时,出现以下错误消息:
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
cannot handle a non-unique multi-index!
有人知道这是怎么回事吗?
答案 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
。