Skip to content
Merged
Show file tree
Hide file tree
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Prev Previous commit
Next Next commit
remove ix-only methods
  • Loading branch information
jbrockmendel committed Jul 27, 2019
commit ec02d1f06bb3d71c449dd2e735030a2093aeabb2
66 changes: 0 additions & 66 deletions pandas/core/indexing.py
Original file line number Diff line number Diff line change
Expand Up @@ -110,37 +110,6 @@ def __call__(self, axis=None):
new_self.axis = axis
return new_self

def __iter__(self):
raise NotImplementedError("ix is not iterable")

def __getitem__(self, key):
if type(key) is tuple:
# Note: we check the type exactly instead of with isinstance
# because NamedTuple is checked separately.
key = tuple(com.apply_if_callable(x, self.obj) for x in key)
try:
values = self.obj._get_value(*key)
except (KeyError, TypeError, InvalidIndexError):
# TypeError occurs here if the key has non-hashable entries,
# generally slice or list.
# TODO(ix): most/all of the TypeError cases here are for ix,
# so this check can be removed once ix is removed.
# The InvalidIndexError is only catched for compatibility
# with geopandas, see
# https://github.com/pandas-dev/pandas/issues/27258
pass
else:
if is_scalar(values):
return values

return self._getitem_tuple(key)
else:
# we by definition only have the 0th axis
axis = self.axis or 0

key = com.apply_if_callable(key, self.obj)
return self._getitem_axis(key, axis=axis)

def _get_label(self, label, axis: int):
if self.ndim == 1:
# for perf reasons we want to try _xs first
Expand Down Expand Up @@ -978,41 +947,6 @@ def _getitem_nested_tuple(self, tup: Tuple):

return obj

def _getitem_axis(self, key, axis: int):
if is_iterator(key):
key = list(key)
self._validate_key(key, axis)

labels = self.obj._get_axis(axis)
if isinstance(key, slice):
return self._get_slice_axis(key, axis=axis)
elif is_list_like_indexer(key) and not (
isinstance(key, tuple) and isinstance(labels, MultiIndex)
):

if hasattr(key, "ndim") and key.ndim > 1:
raise ValueError("Cannot index with multidimensional key")

return self._getitem_iterable(key, axis=axis)
else:

# maybe coerce a float scalar to integer
key = labels._maybe_cast_indexer(key)

if is_integer(key):
if axis == 0 and isinstance(labels, MultiIndex):
try:
return self._get_label(key, axis=axis)
except (KeyError, TypeError):
if self.obj.index.levels[0].is_integer():
raise

# this is the fallback! (for a non-float, non-integer index)
if not labels.is_floating() and not labels.is_integer():
return self._get_loc(key, axis=axis)

return self._get_label(key, axis=axis)

def _get_listlike_indexer(self, key, axis: int, raise_missing: bool = False):
"""
Transform a list-like of keys into a new index and an indexer.
Expand Down
1 change: 1 addition & 0 deletions pandas/tests/test_downstream.py
Original file line number Diff line number Diff line change
Expand Up @@ -123,6 +123,7 @@ def test_geopandas():
assert geopandas.read_file(fp) is not None


@pytest.mark.xfail(reason="ix-only methods have been removed from _NDFrameIndexer")
def test_geopandas_coordinate_indexer():
# this test is included to have coverage of one case in the indexing.py
# code that is only kept for compatibility with geopandas, see
Expand Down