Skip to content
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.

Commit f86c3be

Browse files
committedFeb 8, 2012
BUG: closes #764, set_index destroys column multiindex
1 parent 94f7a81 commit f86c3be

File tree

3 files changed

+20
-1
lines changed

3 files changed

+20
-1
lines changed
 

‎pandas/core/index.py

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1117,6 +1117,10 @@ def copy(self, order='C'):
11171117
def dtype(self):
11181118
return np.dtype('O')
11191119

1120+
@property
1121+
def _constructor(self):
1122+
return MultiIndex.from_tuples
1123+
11201124
@staticmethod
11211125
def _from_elements(values, labels=None, levels=None, names=None,
11221126
sortorder=None):

‎pandas/core/internals.py

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -599,7 +599,9 @@ def get_scalar(self, tup):
599599
def delete(self, item):
600600
i, _ = self._find_block(item)
601601
loc = self.items.get_loc(item)
602-
new_items = Index(np.delete(np.asarray(self.items), loc))
602+
603+
new_items = self.items._constructor(
604+
np.delete(np.asarray(self.items), loc))
603605

604606
self._delete_from_block(i, item)
605607
self.set_items_norename(new_items)

‎pandas/tests/test_frame.py

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2607,6 +2607,19 @@ def test_drop_duplicates(self):
26072607
expected = df2.drop_duplicates(['A', 'B'], take_last=True)
26082608
assert_frame_equal(result, expected)
26092609

2610+
def test_drop_col_still_multiindex(self):
2611+
arrays = [[ 'a', 'b', 'c', 'top'],
2612+
[ '', '', '', 'OD' ],
2613+
[ '', '', '', 'wx' ]]
2614+
2615+
tuples = zip(*arrays)
2616+
tuples.sort()
2617+
index = MultiIndex.from_tuples(tuples)
2618+
2619+
df = DataFrame(randn(3,4), columns=index)
2620+
del df[('a','','')]
2621+
assert(isinstance(df.columns, MultiIndex))
2622+
26102623
def test_fillna(self):
26112624
self.tsframe['A'][:5] = nan
26122625
self.tsframe['A'][-5:] = nan

0 commit comments

Comments
 (0)
Please sign in to comment.