Skip to content

Commit 153077f

Browse files
committed
keep name after DataFrame drop, add check_name to assert_dataframe_equal
1 parent 3790f16 commit 153077f

File tree

3 files changed

+22
-3
lines changed

3 files changed

+22
-3
lines changed

pandas/core/generic.py

+7-2
Original file line numberDiff line numberDiff line change
@@ -340,7 +340,7 @@ def drop(self, labels, axis=0, level=None):
340340
dropped : type of caller
341341
"""
342342
axis_name = self._get_axis_name(axis)
343-
axis = self._get_axis(axis)
343+
axis, axis_ = self._get_axis(axis), axis
344344

345345
if axis.is_unique:
346346
if level is not None:
@@ -349,8 +349,13 @@ def drop(self, labels, axis=0, level=None):
349349
new_axis = axis.drop(labels, level=level)
350350
else:
351351
new_axis = axis.drop(labels)
352+
dropped = self.reindex(**{axis_name: new_axis})
353+
try:
354+
dropped.axes[axis_].names = axis.names
355+
except AttributeError:
356+
pass
357+
return dropped
352358

353-
return self.reindex(**{axis_name: new_axis})
354359
else:
355360
if level is not None:
356361
if not isinstance(axis, MultiIndex):

pandas/tests/test_frame.py

+10
Original file line numberDiff line numberDiff line change
@@ -5103,6 +5103,16 @@ def test_corrwith_series(self):
51035103

51045104
assert_series_equal(result, expected)
51055105

5106+
def test_drop_names(self):
5107+
df = DataFrame([[1, 2, 3],[3, 4, 5],[5, 6, 7]], index=['a', 'b', 'c'], columns=['d', 'e', 'f'])
5108+
df.index.name, df.columns.name = 'first', 'second'
5109+
df_dropped_b = df.drop('b')
5110+
df_dropped_e = df.drop('e', axis=1)
5111+
self.assert_(df_dropped_b.index.name == 'first')
5112+
self.assert_(df_dropped_e.index.name == 'first')
5113+
self.assert_(df_dropped_b.columns.name == 'second')
5114+
self.assert_(df_dropped_e.columns.name == 'second')
5115+
51065116
def test_dropEmptyRows(self):
51075117
N = len(self.frame.index)
51085118
mat = randn(N)

pandas/util/testing.py

+5-1
Original file line numberDiff line numberDiff line change
@@ -178,7 +178,8 @@ def assert_frame_equal(left, right, check_dtype=True,
178178
check_index_type=False,
179179
check_column_type=False,
180180
check_frame_type=False,
181-
check_less_precise=False):
181+
check_less_precise=False,
182+
check_names=False):
182183
if check_frame_type:
183184
assert(type(left) == type(right))
184185
assert(isinstance(left, DataFrame))
@@ -204,6 +205,9 @@ def assert_frame_equal(left, right, check_dtype=True,
204205
assert(type(left.columns) == type(right.columns))
205206
assert(left.columns.dtype == right.columns.dtype)
206207
assert(left.columns.inferred_type == right.columns.inferred_type)
208+
if check_names:
209+
assert(left.index.names == right.index.names)
210+
assert(left.columns.names == right.columns.names)
207211

208212

209213
def assert_panel_equal(left, right,

0 commit comments

Comments
 (0)