html_url,issue_url,id,node_id,user,created_at,updated_at,author_association,body,reactions,performed_via_github_app,issue https://github.com/pydata/xarray/issues/1949#issuecomment-424014244,https://api.github.com/repos/pydata/xarray/issues/1949,424014244,MDEyOklzc3VlQ29tbWVudDQyNDAxNDI0NA==,10946756,2018-09-24T15:21:41Z,2018-09-24T15:50:19Z,NONE,"So does this mean that the following line in the docs is now false: ""If a dimension name is given as an argument to drop, it also drops all variables that use that dimension"" This is at http://xarray.pydata.org/en/stable/data-structures.html#dataarray. It does not seem to work as advertised. Before drop: ``` <xarray.Dataset> Dimensions: (Frequency: 2000, Index: 1, Power: 1, Temperature: 1) Coordinates: * Power (Power) float64 -117.0 * Temperature (Temperature) float64 1.16 * Index (Index) int64 0 * Frequency (Frequency) float64 3.865e+09 3.865e+09 3.865e+09 3.865e+09 ... Data variables: I (Power, Temperature, Index, Frequency) float64 ... Q (Power, Temperature, Index, Frequency) float64 ... Time (Power, Temperature, Index) datetime64[ns] ... ``` Then I call `ds.drop('Frequency')`, expecting that this will kill off the Frequency dimension, coordinate, and the `I` and `Q` variables, since they depend on Frequency, but what I get is: ``` <xarray.Dataset> Dimensions: (Frequency: 2000, Index: 1, Power: 1, Temperature: 1) Coordinates: * Power (Power) float64 -117.0 * Temperature (Temperature) float64 1.16 * Index (Index) int64 0 Dimensions without coordinates: Frequency Data variables: I (Power, Temperature, Index, Frequency) float64 ... Q (Power, Temperature, Index, Frequency) float64 ... Time (Power, Temperature, Index) datetime64[ns] ... ``` If I then try dropping Frequency again, it complains that there are no variables named 'Frequency'. So probably this issue should include an update to the documentation. Or maybe that should be a new issue.","{""total_count"": 0, ""+1"": 0, ""-1"": 0, ""laugh"": 0, ""hooray"": 0, ""confused"": 0, ""heart"": 0, ""rocket"": 0, ""eyes"": 0}",,301031693 https://github.com/pydata/xarray/issues/1949#issuecomment-369315468,https://api.github.com/repos/pydata/xarray/issues/1949,369315468,MDEyOklzc3VlQ29tbWVudDM2OTMxNTQ2OA==,17178478,2018-02-28T17:27:10Z,2018-02-28T17:27:38Z,NONE,"The drop technique seems reasonable, if a bit long-winded for the programmatic case (loop over all dimensions, find any that are empty -> loop over all variables, drop any that contain those empty dimensions). As an addition, if the empty dimension also has an associated empty coordinate then it requires an extra step to get rid of it: ``` python In [21]: test_dataset = xr.Dataset(dict( ...: empty_array=xr.DataArray([], dims='a', coords={'a':[]}), ...: populated_array=xr.DataArray([1], {'b':['1']}, 'b') ...: )) In [22]: test_dataset Out[22]: <xarray.Dataset> Dimensions: (a: 0, b: 1) Coordinates: * a (a) float64 * b (b) <U1 '1' Data variables: empty_array (a) float64 populated_array (b) int32 1 In [23]: test_dataset.drop('empty_array') Out[23]: <xarray.Dataset> Dimensions: (a: 0, b: 1) Coordinates: * a (a) float64 * b (b) <U1 '1' Data variables: populated_array (b) int32 1 In [24]: del test_dataset['a'] In [25]: test_dataset.drop('empty_array') Out[25]: <xarray.Dataset> Dimensions: (b: 1) Coordinates: * b (b) <U1 '1' Data variables: populated_array (b) int32 1 ``` Fixes seem reasonable, based on how we use xarray over at https://github.com/calliope-project/calliope/. The second one also provides more scope to remove subsets of data (all corresponding dims, coords, vars) if the dimension becomes superfluous for any reason, whether or not the dimension is empty. ","{""total_count"": 0, ""+1"": 0, ""-1"": 0, ""laugh"": 0, ""hooray"": 0, ""confused"": 0, ""heart"": 0, ""rocket"": 0, ""eyes"": 0}",,301031693 https://github.com/pydata/xarray/issues/1949#issuecomment-369247490,https://api.github.com/repos/pydata/xarray/issues/1949,369247490,MDEyOklzc3VlQ29tbWVudDM2OTI0NzQ5MA==,17178478,2018-02-28T14:00:26Z,2018-02-28T14:00:26Z,NONE,"I don't think it's actually possible to purge `a`, hence why I started an issue rather than SO Q. As you can see, squeeze() removes `b` from the list of dimensions, but not `a` (as `a` has a length 0, not 1). ","{""total_count"": 0, ""+1"": 0, ""-1"": 0, ""laugh"": 0, ""hooray"": 0, ""confused"": 0, ""heart"": 0, ""rocket"": 0, ""eyes"": 0}",,301031693