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/1569#issuecomment-1094066748,https://api.github.com/repos/pydata/xarray/issues/1569,1094066748,IC_kwDOAMm_X85BNiI8,5635139,2022-04-09T15:25:06Z,2022-04-09T15:25:06Z,MEMBER,"The example above is now fixed:
```python
In [1]: ds=xr.Dataset(dict(a=(('z',), np.ones(10))), coords=dict(b=(('z'),np.arange(2).repeat(5)), c=(('z'),np.arange(5).repeat(2))))
...:
In [2]: ds.set_index(bc=['b','c']).groupby('bc').sum()
Out[2]:
Dimensions: (bc: 6, z: 10)
Coordinates:
* bc (bc) object MultiIndex
* b (bc) int64 0 0 0 1 1 1
* c (bc) int64 0 1 2 2 3 4
Dimensions without coordinates: z
Data variables:
a (bc, z) float64 1.0 1.0 1.0 1.0 1.0 1.0 ... 1.0 1.0 1.0 1.0 1.0 1.0 # <- correct
```","{""total_count"": 0, ""+1"": 0, ""-1"": 0, ""laugh"": 0, ""hooray"": 0, ""confused"": 0, ""heart"": 0, ""rocket"": 0, ""eyes"": 0}",,257070215
https://github.com/pydata/xarray/issues/1569#issuecomment-488112182,https://api.github.com/repos/pydata/xarray/issues/1569,488112182,MDEyOklzc3VlQ29tbWVudDQ4ODExMjE4Mg==,1559890,2019-04-30T20:55:01Z,2019-04-30T20:55:01Z,NONE,"I got a solution which is not so flexible but works:
Data:
```python
import pandas as pd
arrays = [np.array(['bar', 'bar', 'baz', 'baz', 'foo', 'foo']),
np.array(['one', 'two', 'one', 'two', 'one', 'two'])]
da = pd.DataFrame(np.random.randn(6, 4)).to_xarray().to_array()
da.coords['index'] = pd.MultiIndex.from_arrays(arrays, names=['first', 'second'])
da
```
```
array([[ 0.379189, 1.082292, -2.073478, -0.84626 , -1.529927, -0.837407],
[-0.267983, -0.2516 , -1.016653, -0.085762, -0.058382, -0.667891],
[-0.013488, -0.855332, -0.038072, -0.385211, -2.149742, -0.304361],
[ 1.749561, -0.606031, 1.914146, 1.6292 , -0.515519, 1.996283]])
Coordinates:
* index (index) MultiIndex
- first (index) object 'bar' 'bar' 'baz' 'baz' 'foo' 'foo'
- second (index) object 'one' 'two' 'one' 'two' 'one' 'two'
* variable (variable) int32 0 1 2 3
```
Groupby on levels:
```python
def multi_groupby(data, levels):
return (((k0,k1),v1) for k0,v0 in data.groupby(levels[0]) for k1,v1 in v0.groupby(levels[1]))
for k,v in multi_groupby(da,['second','variable']):
print(k,v)
```
```
('one', 0)
array([ 0.379189, -2.073478, -1.529927])
Coordinates:
* index (index) MultiIndex
- first (index) object 'bar' 'baz' 'foo'
- second (index) object 'one' 'one' 'one'
variable int32 0
('one', 1)
array([-0.267983, -1.016653, -0.058382])
Coordinates:
* index (index) MultiIndex
- first (index) object 'bar' 'baz' 'foo'
- second (index) object 'one' 'one' 'one'
variable int32 1
('one', 2)
array([-0.013488, -0.038072, -2.149742])
Coordinates:
* index (index) MultiIndex
- first (index) object 'bar' 'baz' 'foo'
- second (index) object 'one' 'one' 'one'
variable int32 2
('one', 3)
array([ 1.749561, 1.914146, -0.515519])
Coordinates:
* index (index) MultiIndex
- first (index) object 'bar' 'baz' 'foo'
- second (index) object 'one' 'one' 'one'
variable int32 3
('two', 0)
array([ 1.082292, -0.84626 , -0.837407])
Coordinates:
* index (index) MultiIndex
- first (index) object 'bar' 'baz' 'foo'
- second (index) object 'two' 'two' 'two'
variable int32 0
('two', 1)
array([-0.2516 , -0.085762, -0.667891])
Coordinates:
* index (index) MultiIndex
- first (index) object 'bar' 'baz' 'foo'
- second (index) object 'two' 'two' 'two'
variable int32 1
('two', 2)
array([-0.855332, -0.385211, -0.304361])
Coordinates:
* index (index) MultiIndex
- first (index) object 'bar' 'baz' 'foo'
- second (index) object 'two' 'two' 'two'
variable int32 2
('two', 3)
array([-0.606031, 1.6292 , 1.996283])
Coordinates:
* index (index) MultiIndex
- first (index) object 'bar' 'baz' 'foo'
- second (index) object 'two' 'two' 'two'
variable int32 3
```","{""total_count"": 1, ""+1"": 1, ""-1"": 0, ""laugh"": 0, ""hooray"": 0, ""confused"": 0, ""heart"": 0, ""rocket"": 0, ""eyes"": 0}",,257070215
https://github.com/pydata/xarray/issues/1569#issuecomment-393345152,https://api.github.com/repos/pydata/xarray/issues/1569,393345152,MDEyOklzc3VlQ29tbWVudDM5MzM0NTE1Mg==,5635139,2018-05-30T22:52:38Z,2018-05-30T22:52:38Z,MEMBER,"Are we making silent mistakes at the moment?
```python
In [1]: import xarray as xr
In [2]: import pandas as pd
In [4]: import numpy as np
In [5]: ds=xr.Dataset(dict(a=(('z',), np.ones(10))), coords=dict(b=(('z'),np.arange(2).repeat(5)), c=(('z'),np.arange(5).repeat(2))))
In [6]: ds
Out[6]:
Dimensions: (z: 10)
Coordinates:
b (z) int64 0 0 0 0 0 1 1 1 1 1
c (z) int64 0 0 1 1 2 2 3 3 4 4
Dimensions without coordinates: z
Data variables:
a (z) float64 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0
In [7]: ds.set_index(bc=['b','c']).groupby('bc').sum()
Out[7]:
Dimensions: (bc: 6)
Coordinates:
* bc (bc) MultiIndex
- bc_level_0 (bc) int64 0 0 0 1 1 1
- bc_level_1 (bc) int64 0 1 2 2 3 4
Data variables:
a (bc) float64 10.0 10.0 10.0 10.0 10.0 10.0 # <--- this is wrong?
```
With a `DataArray`, we do raise:
```python
In [19]: ds['a'].set_index(bc=['b','c'])
Out[19]:
array([1., 1., 1., 1., 1., 1., 1., 1., 1., 1.])
Coordinates:
* bc (bc) MultiIndex
- b (bc) int64 0 0 0 0 0 1 1 1 1 1
- c (bc) int64 0 0 1 1 2 2 3 3 4 4
Dimensions without coordinates: z
In [20]: ds['a'].set_index(bc=['b','c']).groupby('bc')
---------------------------------------------------------------------------
KeyError Traceback (most recent call last)
in ()
----> 1 ds['a'].set_index(bc=['b','c']).groupby('bc')
/usr/local/lib/python3.6/site-packages/xarray/core/common.py in groupby(self, group, squeeze)
472 core.groupby.DatasetGroupBy
473 """"""
--> 474 return self._groupby_cls(self, group, squeeze=squeeze)
475
476 def groupby_bins(self, group, bins, right=True, labels=None, precision=3,
/usr/local/lib/python3.6/site-packages/xarray/core/groupby.py in __init__(self, obj, group, squeeze, grouper, bins, cut_kwargs)
213 group_dim, = group.dims
214
--> 215 expected_size = obj.sizes[group_dim]
216 if group.size != expected_size:
217 raise ValueError('the group variable\'s length does not '
/usr/local/lib/python3.6/site-packages/xarray/core/utils.py in __getitem__(self, key)
306
307 def __getitem__(self, key):
--> 308 return self.mapping[key]
309
310 def __iter__(self):
KeyError: 'bc'
```","{""total_count"": 0, ""+1"": 0, ""-1"": 0, ""laugh"": 0, ""hooray"": 0, ""confused"": 0, ""heart"": 0, ""rocket"": 0, ""eyes"": 0}",,257070215
https://github.com/pydata/xarray/issues/1569#issuecomment-328969009,https://api.github.com/repos/pydata/xarray/issues/1569,328969009,MDEyOklzc3VlQ29tbWVudDMyODk2OTAwOQ==,1217238,2017-09-12T20:05:39Z,2017-09-12T20:05:39Z,MEMBER,"The ""Edit on GitHub"" link at the top right of doc page is probably the most convenient way for primary doc pages. It should walk you through making a pull request if you hit the ""Edit this file"" icon (next to the trash bin) at the top right of the file on GitHub.
To clarify on `level`: it's not supported, but instead you can simply pass the name of a MultiIndex level directly as a name. Multiple arguments are truly not supported yet (https://github.com/pydata/xarray/issues/324).","{""total_count"": 0, ""+1"": 0, ""-1"": 0, ""laugh"": 0, ""hooray"": 0, ""confused"": 0, ""heart"": 0, ""rocket"": 0, ""eyes"": 0}",,257070215
https://github.com/pydata/xarray/issues/1569#issuecomment-328954481,https://api.github.com/repos/pydata/xarray/issues/1569,328954481,MDEyOklzc3VlQ29tbWVudDMyODk1NDQ4MQ==,25231875,2017-09-12T19:17:24Z,2017-09-12T19:17:24Z,NONE,"Makes sense. Just needs a doc update, then.
What's the preferred means to contribute doc (including little edits like this)? Pull requests? ","{""total_count"": 0, ""+1"": 0, ""-1"": 0, ""laugh"": 0, ""hooray"": 0, ""confused"": 0, ""heart"": 0, ""rocket"": 0, ""eyes"": 0}",,257070215
https://github.com/pydata/xarray/issues/1569#issuecomment-328939373,https://api.github.com/repos/pydata/xarray/issues/1569,328939373,MDEyOklzc3VlQ29tbWVudDMyODkzOTM3Mw==,1217238,2017-09-12T18:21:36Z,2017-09-12T18:21:36Z,MEMBER,We should clarify: we support a subset of the pandas API. The `level` argument and grouping by multiple variables at once is not yet supported.,"{""total_count"": 0, ""+1"": 0, ""-1"": 0, ""laugh"": 0, ""hooray"": 0, ""confused"": 0, ""heart"": 0, ""rocket"": 0, ""eyes"": 0}",,257070215