如何不删除变量或维度即可更新带新坐标的xarray DataSet变量
xarray不删除维度/变量更新数据集变量的实现方法
完全可以在不提前删除维度或变量的前提下完成更新,根据你的业务场景可选择以下两种方案:
场景1:全局调整indicator维度长度,所有依赖该维度的变量同步适配
如果你的数据集内所有用到indicator维度的变量都需要同步把维度长度从2调整为1,可以直接对维度做切片,再更新变量和坐标即可,无需删除维度:
# 先对indicator维度做切片,将维度长度调整为1 ds = ds.isel(indicator=0) # 直接更新目标变量值 ds['indicators'] = (['date', 'ticker', 'indicator'], atr.data) # 同步更新坐标值 ds = ds.assign_coords(indicator=['ATR'])
你之前写的代码可以直接简化为以下形式,省略冗余的drop_dims操作:
ds.isel(indicator=0).update({'indicators': (['date', 'ticker', 'indicator'], atr.data)}).assign_coords(indicator=['ATR'])
场景2:仅更新indicators单变量,保留原有全局indicator维度和其他变量数据
如果不需要修改其他变量的indicator维度,只需要调整indicators变量的对应维度,给该变量设置独立的维度名即可,不会影响原有维度和其他变量:
ds = ds.update({ 'indicators': (['date', 'ticker', 'indicator_new'], atr.data) }).assign_coords(indicator_new=['ATR'])
该方案中原长度为2的indicator维度会完全保留,其他依赖该维度的变量不受任何影响。
内容的提问来源于stack exchange,提问作者Pier-Olivier Marquis
相关产品推荐
相关产品推荐

