如何将一个xarray对象中的指定变量添加到另一个xarray对象中
实现方案
你有两种简单的方式完成变量添加,两种都可以达到预期效果:
方式1:用merge方法合并
两个Dataset共享station_id坐标且对应取值完全对齐,直接传入待合并的对象列表即可,默认会自动按公共坐标匹配:
# 假设存储气象要素的上层Dataset命名为ds_met,存储站点属性的下层Dataset命名为ds_station merged_ds = xr.merge([ds_met, ds_station[["latitude", "longitude"]]])
如果需要保留站点的所有属性,直接去掉对变量的筛选即可:
merged_ds = xr.merge([ds_met, ds_station])
方式2:直接变量赋值
因为两个Dataset的station_id维度完全对齐,也可以直接把需要的变量赋值到目标Dataset中,写法更简洁:
ds_met["latitude"] = ds_station["latitude"] ds_met["longitude"] = ds_station["longitude"]
原理解释
- 你之前用
concat失败是因为concat的作用是沿指定维度堆叠同结构的Dataset,适合拼接多段时间、多批站点这类同字段数据,而非添加新的变量。 merge的核心入参是待合并的xarray对象列表,默认会自动识别所有公共坐标作为匹配键,只要公共坐标的取值、长度完全一致,就会自动把所有变量合并到同一个Dataset中。
内容的提问来源于stack exchange,提问作者Adriano Matos
相关产品推荐
相关产品推荐

