id,node_id,number,title,user,state,locked,assignee,milestone,comments,created_at,updated_at,closed_at,author_association,active_lock_reason,draft,pull_request,body,reactions,performed_via_github_app,state_reason,repo,type 454677926,MDU6SXNzdWU0NTQ2Nzc5MjY=,3015,Assigning values to a subset of a dataset,23265127,closed,0,,,2,2019-06-11T13:03:16Z,2021-05-25T08:12:52Z,2021-05-25T08:12:52Z,NONE,,,,"Hi, can somebody tell me what is the ""correct"" way to manipulate a subset of the data contained in a Dataset? Consider the following example: ``` import numpy as np import xarray as xr shape = (3, 2) da1 = xr.DataArray(np.zeros(shape), dims=('x', 'y'), coords=dict(x=[1, 2, 3], y=[4, 5]), name='var1') da2 = xr.DataArray(np.zeros(shape), dims=('x', 'y'), coords=dict(x=[1, 2, 3], y=[4, 5]), name='var2') ``` I can easily change the value of variable 1 at a given coordinate in the first DataArray using the following syntax: ``` da1.loc[dict(x=1, y=4)] = 1 ``` However, if I merge both DataArrays into a single Dataset and want to change both variables at the same time, there seems to be no straightforward solution: ``` ds = xr.merge([da1, da2]) ds.loc[dict(x=1, y=4)] = ... <-- what to write here? ``` The only solution I could come up with is to modify the two values separately, but this is neither very elegant nor scales with the number of variables: ``` ds['var1'].loc[dict(x=1, y=4)] = 2 ds['var2'].loc[dict(x=1, y=4)] = 3 ``` All I could find in the docs about this issue is: > Using indexing to assign values to a subset of dataset (e.g., ds[dict(space=0)] = 1) is not yet supported. If not by indexing, what other (more compact) way exists? A potential solution might be to create a separate Dataset and then use the `update` method, but this seems overly complicated, too. ","{""url"": ""https://api.github.com/repos/pydata/xarray/issues/3015/reactions"", ""total_count"": 1, ""+1"": 1, ""-1"": 0, ""laugh"": 0, ""hooray"": 0, ""confused"": 0, ""heart"": 0, ""rocket"": 0, ""eyes"": 0}",,completed,13221727,issue