File tree Expand file tree Collapse file tree 2 files changed +13
-1
lines changed Expand file tree Collapse file tree 2 files changed +13
-1
lines changed Original file line number Diff line number Diff line change @@ -1386,14 +1386,17 @@ def unstack(self, dim):
1386
1386
raise ValueError ('cannot unstack a dimension that does not have '
1387
1387
'a MultiIndex' )
1388
1388
1389
+ full_idx = pd .MultiIndex .from_product (index .levels , names = index .names )
1390
+ obj = self .reindex (copy = False , ** {dim : full_idx })
1391
+
1389
1392
new_dim_names = index .names
1390
1393
if any (name is None for name in new_dim_names ):
1391
1394
raise ValueError ('cannot unstack dimension with unnamed levels' )
1392
1395
1393
1396
new_dim_sizes = [lev .size for lev in index .levels ]
1394
1397
1395
1398
variables = OrderedDict ()
1396
- for name , var in self .variables .items ():
1399
+ for name , var in obj .variables .items ():
1397
1400
if name != dim :
1398
1401
if dim in var .dims :
1399
1402
new_dims = OrderedDict (zip (new_dim_names , new_dim_sizes ))
Original file line number Diff line number Diff line change @@ -868,6 +868,15 @@ def test_stack_unstack(self):
868
868
actual = orig .stack (z = ['x' , 'y' ]).unstack ('z' )
869
869
self .assertDataArrayIdentical (orig , actual )
870
870
871
+ def test_unstack_pandas_consistency (self ):
872
+ df = pd .DataFrame ({'foo' : range (3 ),
873
+ 'x' : ['a' , 'b' , 'b' ],
874
+ 'y' : [0 , 0 , 1 ]})
875
+ s = df .set_index (['x' , 'y' ])['foo' ]
876
+ expected = DataArray (s .unstack (), name = 'foo' )
877
+ actual = DataArray (s , dims = 'z' ).unstack ('z' )
878
+ self .assertDataArrayIdentical (expected , actual )
879
+
871
880
def test_transpose (self ):
872
881
self .assertVariableEqual (self .dv .variable .transpose (),
873
882
self .dv .transpose ())
You can’t perform that action at this time.
0 commit comments