|
16 | 16 |
|
17 | 17 | from pandas.compat import(
|
18 | 18 | map, zip, range, long, lrange, lmap, lzip,
|
19 |
| - OrderedDict, u, StringIO |
| 19 | + OrderedDict, u, StringIO, string_types |
20 | 20 | )
|
21 | 21 | from pandas import compat
|
22 | 22 |
|
@@ -12428,6 +12428,28 @@ def test_unstack_bool(self):
|
12428 | 12428 | ['c', 'l']]))
|
12429 | 12429 | assert_frame_equal(rs, xp)
|
12430 | 12430 |
|
| 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 | + |
12431 | 12453 | def test_unstack_to_series(self):
|
12432 | 12454 | # check reversibility
|
12433 | 12455 | data = self.frame.unstack()
|
|
0 commit comments