Skip to content

Commit 669c606

Browse files
committed
ENH: revert Index mutability change. improve performance of dropna by using take. related to #2162
1 parent b5b4ba3 commit 669c606

File tree

4 files changed

+5
-10
lines changed

4 files changed

+5
-10
lines changed

pandas/core/frame.py

+1-3
Original file line numberDiff line numberDiff line change
@@ -2709,9 +2709,7 @@ def dropna(self, axis=0, how='any', thresh=None, subset=None):
27092709
else:
27102710
raise ValueError('must specify how or thresh')
27112711

2712-
labels = self._get_axis(axis)
2713-
new_labels = labels[mask]
2714-
return self.reindex(**{axis_name: new_labels})
2712+
return self.take(mask.nonzero()[0], axis=axis)
27152713

27162714
def drop_duplicates(self, cols=None, take_last=False, inplace=False):
27172715
"""

pandas/core/index.py

+2-5
Original file line numberDiff line numberDiff line change
@@ -305,11 +305,8 @@ def __contains__(self, key):
305305
def __hash__(self):
306306
return hash(self.view(np.ndarray))
307307

308-
def __getattribute__(self,name):
309-
if name=="__setitem__": # emulate an Immutable ndarray
310-
raise AttributeError(str(self.__class__) + ' object is immutable')
311-
else:
312-
return object.__getattribute__(self,name)
308+
def __setitem__(self, key, value):
309+
raise Exception(str(self.__class__) + ' object is immutable')
313310

314311
def __getitem__(self, key):
315312
"""Override numpy.ndarray's __getitem__ method to work as desired"""

pandas/tests/test_format.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -765,7 +765,7 @@ def test_to_html_with_classes(self):
765765
<table border="1" class="dataframe sortable draggable">
766766
<tbody>
767767
<tr>
768-
<td>Index((), dtype=object)</td>
768+
<td>Index([], dtype=object)</td>
769769
<td>Empty DataFrame</td>
770770
</tr>
771771
</tbody>

pandas/tests/test_index.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -57,7 +57,7 @@ def test_sort(self):
5757
self.assertRaises(Exception, self.strIndex.sort)
5858

5959
def test_mutability(self):
60-
self.assertFalse(hasattr(self.strIndex,"__setitem__"))
60+
self.assertRaises(Exception, self.strIndex.__setitem__, 0, 'foo')
6161

6262
def test_constructor(self):
6363
# regular instance creation

0 commit comments

Comments
 (0)