-
-
Notifications
You must be signed in to change notification settings - Fork 17.9k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
CLN: remove methods of ExtensionIndex that duplicate base Index #34163
Changes from all commits
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
Original file line number | Diff line number | Diff line change | ||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
@@ -9,11 +9,7 @@ | |||||||||||||||||||||||||||||||||
from pandas.errors import AbstractMethodError | ||||||||||||||||||||||||||||||||||
from pandas.util._decorators import cache_readonly, doc | ||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||
from pandas.core.dtypes.common import ( | ||||||||||||||||||||||||||||||||||
ensure_platform_int, | ||||||||||||||||||||||||||||||||||
is_dtype_equal, | ||||||||||||||||||||||||||||||||||
is_object_dtype, | ||||||||||||||||||||||||||||||||||
) | ||||||||||||||||||||||||||||||||||
from pandas.core.dtypes.common import is_dtype_equal, is_object_dtype | ||||||||||||||||||||||||||||||||||
from pandas.core.dtypes.generic import ABCSeries | ||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||
from pandas.core.arrays import ExtensionArray | ||||||||||||||||||||||||||||||||||
|
@@ -223,29 +219,14 @@ def __getitem__(self, key): | |||||||||||||||||||||||||||||||||
deprecate_ndim_indexing(result) | ||||||||||||||||||||||||||||||||||
return result | ||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||
def __iter__(self): | ||||||||||||||||||||||||||||||||||
return self._data.__iter__() | ||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||
# --------------------------------------------------------------------- | ||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||
def __array__(self, dtype=None) -> np.ndarray: | ||||||||||||||||||||||||||||||||||
return np.asarray(self._data, dtype=dtype) | ||||||||||||||||||||||||||||||||||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. This is identical with the Index one |
||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||
def _get_engine_target(self) -> np.ndarray: | ||||||||||||||||||||||||||||||||||
# NB: _values_for_argsort happens to match the desired engine targets | ||||||||||||||||||||||||||||||||||
# for all of our existing EA-backed indexes, but in general | ||||||||||||||||||||||||||||||||||
# cannot be relied upon to exist. | ||||||||||||||||||||||||||||||||||
return self._data._values_for_argsort() | ||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||
@doc(Index.dropna) | ||||||||||||||||||||||||||||||||||
def dropna(self, how="any"): | ||||||||||||||||||||||||||||||||||
if how not in ("any", "all"): | ||||||||||||||||||||||||||||||||||
raise ValueError(f"invalid how option: {how}") | ||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||
if self.hasnans: | ||||||||||||||||||||||||||||||||||
return self._shallow_copy(self._data[~self._isnan]) | ||||||||||||||||||||||||||||||||||
return self._shallow_copy() | ||||||||||||||||||||||||||||||||||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. The only difference here with the Index one is the use of There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. not sure if it matters for this method, but the distinction would matter for MultiIndex, which does not have _data. There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. In this case, MultiIndex actually overrides But indeed, in general it's only for MI that using |
||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||
def repeat(self, repeats, axis=None): | ||||||||||||||||||||||||||||||||||
nv.validate_repeat(tuple(), dict(axis=axis)) | ||||||||||||||||||||||||||||||||||
result = self._data.repeat(repeats, axis=axis) | ||||||||||||||||||||||||||||||||||
|
@@ -259,27 +240,6 @@ def _concat_same_dtype(self, to_concat, name): | |||||||||||||||||||||||||||||||||
arr = type(self._data)._concat_same_type(to_concat) | ||||||||||||||||||||||||||||||||||
return type(self)._simple_new(arr, name=name) | ||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||
@doc(Index.take) | ||||||||||||||||||||||||||||||||||
def take(self, indices, axis=0, allow_fill=True, fill_value=None, **kwargs): | ||||||||||||||||||||||||||||||||||
nv.validate_take(tuple(), kwargs) | ||||||||||||||||||||||||||||||||||
indices = ensure_platform_int(indices) | ||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||
taken = self._assert_take_fillable( | ||||||||||||||||||||||||||||||||||
self._data, | ||||||||||||||||||||||||||||||||||
indices, | ||||||||||||||||||||||||||||||||||
allow_fill=allow_fill, | ||||||||||||||||||||||||||||||||||
fill_value=fill_value, | ||||||||||||||||||||||||||||||||||
na_value=self._na_value, | ||||||||||||||||||||||||||||||||||
) | ||||||||||||||||||||||||||||||||||
return type(self)(taken, name=self.name) | ||||||||||||||||||||||||||||||||||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Same here ( pandas/pandas/core/indexes/base.py Lines 688 to 703 in 9c08fe1
|
||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||
def unique(self, level=None): | ||||||||||||||||||||||||||||||||||
if level is not None: | ||||||||||||||||||||||||||||||||||
self._validate_index_level(level) | ||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||
result = self._data.unique() | ||||||||||||||||||||||||||||||||||
return self._shallow_copy(result) | ||||||||||||||||||||||||||||||||||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. The base class ends up dispatching to Lines 1257 to 1270 in 9c08fe1
The There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more.
sounds worthwhile, yah |
||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||
def _get_unique_index(self, dropna=False): | ||||||||||||||||||||||||||||||||||
if self.is_unique and not dropna: | ||||||||||||||||||||||||||||||||||
return self | ||||||||||||||||||||||||||||||||||
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Should be equivalent to
pandas/pandas/core/base.py
Lines 1034 to 1051 in 9c08fe1
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Sure (alternatively could remove L1047-1049 from the base class implementation.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
No, because Series also uses that