Skip to content

Commit f7f7e13

Browse files
committed
BUG: hack aroudn multiple level unstacking into hierarchical columns bug
1 parent a52df7d commit f7f7e13

File tree

2 files changed

+16
-1
lines changed

2 files changed

+16
-1
lines changed

pandas/core/reshape.py

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -245,8 +245,11 @@ def _unstack_multiple(data, clocs):
245245
else:
246246
if isinstance(data.columns, MultiIndex):
247247
result = data
248-
for val in clocs:
248+
for i in range(len(clocs)):
249+
val = clocs[i]
249250
result = result.unstack(val)
251+
clocs = [val if i > val else val - 1 for val in clocs]
252+
250253
return result
251254

252255
dummy = DataFrame(data.values, index=dummy_index,

pandas/tests/test_multilevel.py

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -882,6 +882,18 @@ def test_stack_unstack_multiple(self):
882882
expected = self.ymd.unstack(2).unstack(1).dropna(axis=1, how='all')
883883
assert_frame_equal(unstacked, expected.ix[:, unstacked.columns])
884884

885+
def test_unstack_multiple_hierarchical(self):
886+
df = DataFrame(index=[[0, 0, 0, 0, 1, 1, 1, 1],
887+
[0, 0, 1, 1, 0, 0, 1, 1],
888+
[0, 1, 0, 1, 0, 1, 0, 1]],
889+
columns=[[0, 0, 1, 1], [0, 1, 0, 1]])
890+
891+
df.index.names = ['a', 'b', 'c']
892+
df.columns.names = ['d', 'e']
893+
894+
# it works!
895+
df.unstack(['b', 'c'])
896+
885897
def test_groupby_transform(self):
886898
s = self.frame['A']
887899
grouper = s.index.get_level_values(0)

0 commit comments

Comments
 (0)