這裏是一個玩具的例子,但我有2個數據框; (1)rows = samples,cols = attributes;和(2)rows = samples,cols = metadata-fields。沿着現有軸的Concat/merge xr.DataArray(Xarray | Python 3)
我想要concat
或merge
創建3維xr.DataArray
。我已經做了多次,但我不明白爲什麼它在這種情況下不起作用?我想concat
沿着patient_id
軸有一個3D xr.DataArray
。
爲什麼不是xr.concat
建立三維DataArray
?我認爲我錯誤地使用了dim
參數,因爲它應該沿着一個新的座標軸concat
,但是有沒有辦法在現有座標軸上執行此操作?
我試圖使用Create DataArray from Dict of 2D DataFrames/Arrays的方法,但它不工作。我merge
工作,但它把它變成一個DataSet
W/2的數據變量
np.random.seed(0)
patient_ids = ["patient_%d"%_ for _ in range(42)]
attr_ids = ["attr_%d"%_ for _ in range(481)]
meta_ids = ["meta_%d"%_ for _ in range(32)]
DA_A = xr.DataArray(pd.DataFrame(np.random.random((42,481)),
index=patient_ids,
columns=attr_ids),
dims=["patient_id","attribute"])
DA_B = xr.DataArray(pd.DataFrame(np.random.random((42,32)),
index=patient_ids,
columns=meta_ids),
dims=["patient_id","metadata"])
DA_A.coords
# Coordinates:
# * patient_id (patient_id) object 'patient_0' 'patient_1' 'patient_2' ...
# * attribute (attribute) object 'attr_0' 'attr_1' 'attr_2' 'attr_3' ...
DA_B.coords
# Coordinates:
# * patient_id (patient_id) object 'patient_0' 'patient_1' 'patient_2' ...
# * metadata (metadata) object 'meta_0' 'meta_1' 'meta_2' 'meta_3' ...
xr.concat([DA_A, DA_B], dim="patient_id")
# KeyError: 'attribute'
我不認爲你想使用'concat'。你得到的錯誤是告訴你'DA_B'沒有'attribute'維度。根據我看到你試圖做的事情,一個帶有共享/對齊維度(patient_id,attribute,metadata)的'Dataset'可能就是你想要的。 – jhamman