Python 用另一个坐标替换xarray坐标

Python 用另一个坐标替换xarray坐标,python,coordinate,xarray,Python,Coordinate,Xarray,我尝试用一个坐标替换xarray.Dataset中长度相同的两个坐标。我不关心旧坐标或其值;我只是想替换它们。有什么方便的方法吗 import xarray as xr ds = xr.Dataset({ "a": ("a_coord", [0, 1, 2]), "b": ("b_coord", [50, 10, 20]), "a_coord": [4, 8, 9], "b_coord": [3, 1, 4], "new_coord": [0, 1, 2]

我尝试用一个坐标替换xarray.Dataset中长度相同的两个坐标。我不关心旧坐标或其值;我只是想替换它们。有什么方便的方法吗

import xarray as xr
ds = xr.Dataset({
    "a": ("a_coord", [0, 1, 2]),
    "b": ("b_coord", [50, 10, 20]),
    "a_coord": [4, 8, 9],
    "b_coord": [3, 1, 4],
    "new_coord": [0, 1, 2],
})
# Get rid of a_coord and b_coord and replace both with new_coord, so a and b
# have new_coord as coordinate.
# But how?
我尝试了重命名,但它返回了一个冲突错误(因为新的合作关系已经存在)


是否必须将新坐标显式分配给依赖于旧坐标之一的每个数据变量?由于我有很多数据变量(不仅仅是a和b)和其他坐标,这可能会变得很混乱。

您需要先重置索引:

ds.reset_index(['a_coord', 'b_coord'], drop = True, inplace = True)
ds['a']= ds.a.rename({'a_coord': 'new_coord'})
ds['b']= ds.b.rename({'b_coord': 'new_coord'})
ds.reset_index(['a_coord', 'b_coord'], drop = True, inplace = True)
ds['a']= ds.a.rename({'a_coord': 'new_coord'})
ds['b']= ds.b.rename({'b_coord': 'new_coord'})