From 3c69575c1aa5044b987ed9099ad3285245481cc9 Mon Sep 17 00:00:00 2001 From: waitingkuo Date: Mon, 5 Aug 2013 16:59:23 +0800 Subject: [PATCH 1/2] fix issue #4160, rename the MultiIndex --- pandas/core/internals.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pandas/core/internals.py b/pandas/core/internals.py index abe70e9037264..849ae296a0d13 100644 --- a/pandas/core/internals.py +++ b/pandas/core/internals.py @@ -2148,7 +2148,7 @@ def rename_axis(self, mapper, axis=1): index = self.axes[axis] if isinstance(index, MultiIndex): - new_axis = MultiIndex.from_tuples([tuple(mapper(y) for y in x) for x in index], names=index.names) + new_axis = MultiIndex.from_tuples([mapper(x) for x in index], names=index.names) else: new_axis = Index([mapper(x) for x in index], name=index.name) @@ -2161,7 +2161,7 @@ def rename_axis(self, mapper, axis=1): def rename_items(self, mapper, copydata=True): if isinstance(self.items, MultiIndex): - items = [tuple(mapper(y) for y in x) for x in self.items] + items = [mapper(x) for x in self.items] new_items = MultiIndex.from_tuples(items, names=self.items.names) else: items = [mapper(x) for x in self.items] From bb6d43a3b6558559492eff105db371fa4c778fcf Mon Sep 17 00:00:00 2001 From: waitingkuo Date: Mon, 5 Aug 2013 16:59:59 +0800 Subject: [PATCH 2/2] TST: test case for rename MultiIndex --- pandas/tests/test_frame.py | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/pandas/tests/test_frame.py b/pandas/tests/test_frame.py index 842f114090a50..5b9e6aecfde93 100644 --- a/pandas/tests/test_frame.py +++ b/pandas/tests/test_frame.py @@ -7804,10 +7804,10 @@ def test_rename(self): index = MultiIndex.from_tuples(tuples_index, names=['foo', 'bar']) columns = MultiIndex.from_tuples(tuples_columns, names=['fizz', 'buzz']) renamer = DataFrame([(0,0),(1,1)], index=index, columns=columns) - renamed = renamer.rename(index={'foo1': 'foo3', 'bar2': 'bar3'}, - columns={'fizz1': 'fizz3', 'buzz2': 'buzz3'}) - new_index = MultiIndex.from_tuples([('foo3', 'bar1'), ('foo2', 'bar3')]) - new_columns = MultiIndex.from_tuples([('fizz3', 'buzz1'), ('fizz2', 'buzz3')]) + renamed = renamer.rename(index={('foo1', 'bar1'): ('foo3', 'bar3')}, + columns={('fizz1', 'buzz1'): ('fizz2', 'buzz2')}) + new_index = MultiIndex.from_tuples([('foo3', 'bar3'), ('foo2', 'bar2')]) + new_columns = MultiIndex.from_tuples([('fizz3', 'buzz3'), ('fizz2', 'buzz2')]) self.assert_(np.array_equal(renamed.index, new_index)) self.assert_(np.array_equal(renamed.columns, new_columns)) self.assertEquals(renamed.index.names, renamer.index.names)