【发布时间】:2016-08-12 19:53:11
【问题描述】:
这是一个玩具示例,但我有 2 个数据框; (1) 行=样本,列=属性; (2) rows=samples, cols=metadata-fields。
我想concat 或merge 创建3 维xr.DataArray。我已经多次这样做了,但我无法弄清楚为什么它在这种情况下不起作用?我想concat 沿着patient_id 轴有一个3D xr.DataArray。
xr.concat 为什么不构建 3 维 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维度。根据我看到您尝试做的事情,具有共享/对齐维度(患者 ID、属性、元数据)的Dataset可能是您想要的。
标签: python pandas python-xarray