Skip to content

Commit a028eb7

Browse files
committed
BUG: unstack on unicode name level breaks pandas-dev#9856
[PYCON 2015 Sprints]
1 parent 35b20d8 commit a028eb7

File tree

2 files changed

+24
-2
lines changed

2 files changed

+24
-2
lines changed

pandas/core/index.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -4023,7 +4023,7 @@ def sortlevel(self, level=0, ascending=True, sort_remaining=True):
40234023
labels = list(self.labels)
40244024
shape = list(self.levshape)
40254025

4026-
if isinstance(level, (str, int)):
4026+
if isinstance(level, (compat.string_types, int)):
40274027
level = [level]
40284028
level = [self._get_level_number(lev) for lev in level]
40294029

pandas/tests/test_frame.py

+23-1
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@
1616

1717
from pandas.compat import(
1818
map, zip, range, long, lrange, lmap, lzip,
19-
OrderedDict, u, StringIO
19+
OrderedDict, u, StringIO, string_types
2020
)
2121
from pandas import compat
2222

@@ -12428,6 +12428,28 @@ def test_unstack_bool(self):
1242812428
['c', 'l']]))
1242912429
assert_frame_equal(rs, xp)
1243012430

12431+
def test_unstack_level_binding(self):
12432+
# GH9856
12433+
mi = pd.MultiIndex(
12434+
levels = [[u'foo', u'bar'], [u'one', u'two'], [u'a', u'b']],
12435+
labels = [[0, 0, 1, 1], [0, 1, 0, 1], [1, 0, 1, 0]],
12436+
names = [u'first', u'second', u'third'])
12437+
s = pd.Series(0, index=mi)
12438+
result = s.unstack([1, 2]).stack(0)
12439+
12440+
expected_mi = pd.MultiIndex(
12441+
levels = [['foo', 'bar'], ['one', 'two']],
12442+
labels = [[0, 0, 1, 1], [0, 1, 0, 1]],
12443+
names = ['first', 'second'])
12444+
12445+
expected = pd.DataFrame(np.array([[np.nan, 0], [0, np.nan], [np.nan, 0], [0, np.nan]],
12446+
dtype=np.float64),
12447+
index=expected_mi,
12448+
columns=pd.Index(['a', 'b'],
12449+
name='third'))
12450+
12451+
self.assert_frame_equal(result, expected)
12452+
1243112453
def test_unstack_to_series(self):
1243212454
# check reversibility
1243312455
data = self.frame.unstack()

0 commit comments

Comments
 (0)