Skip to content

Commit aa5b6e6

Browse files
topper-123jorisvandenbossche
authored andcommitted
DEPR: deprecate .asobject property (#18572)
1 parent 6e56195 commit aa5b6e6

32 files changed

+158
-127
lines changed

asv_bench/benchmarks/index_object.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ def setup(self):
1212
if (self.rng.dtype == object):
1313
self.idx_rng = self.rng.view(Index)
1414
else:
15-
self.idx_rng = self.rng.asobject
15+
self.idx_rng = self.rng.astype(object)
1616
self.idx_rng2 = self.idx_rng[:(-1)]
1717

1818
# other datetime

doc/source/whatsnew/v0.22.0.txt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -124,7 +124,7 @@ Deprecations
124124

125125
- ``Series.from_array`` and ``SparseSeries.from_array`` are deprecated. Use the normal constructor ``Series(..)`` and ``SparseSeries(..)`` instead (:issue:`18213`).
126126
- ``DataFrame.as_matrix`` is deprecated. Use ``DataFrame.values`` instead (:issue:`18458`).
127-
-
127+
- ``Series.asobject``, ``DatetimeIndex.asobject``, ``PeriodIndex.asobject`` and ``TimeDeltaIndex.asobject`` have been deprecated. Use '.astype(object)' instead (:issue:`18572`)
128128

129129
.. _whatsnew_0220.prior_deprecations:
130130

pandas/_libs/algos_common_helper.pxi.in

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -552,8 +552,8 @@ cpdef ensure_object(object arr):
552552
return arr
553553
else:
554554
return arr.astype(np.object_)
555-
elif hasattr(arr, 'asobject'):
556-
return arr.asobject
555+
elif hasattr(arr, '_box_values_as_index'):
556+
return arr._box_values_as_index()
557557
else:
558558
return np.array(arr, dtype=np.object_)
559559

pandas/core/accessor.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@
1010

1111
class DirNamesMixin(object):
1212
_accessors = frozenset([])
13-
_deprecations = frozenset([])
13+
_deprecations = frozenset(['asobject'])
1414

1515
def _dir_deletions(self):
1616
""" delete unwanted __dir__ for this object """

pandas/core/algorithms.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -369,7 +369,7 @@ def unique(values):
369369
# to return an object array of tz-aware Timestamps
370370

371371
# TODO: it must return DatetimeArray with tz in pandas 2.0
372-
uniques = uniques.asobject.values
372+
uniques = uniques.astype(object).values
373373

374374
return uniques
375375

pandas/core/dtypes/concat.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -401,7 +401,7 @@ def convert_to_pydatetime(x, axis):
401401
# if dtype is of datetimetz or timezone
402402
if x.dtype.kind == _NS_DTYPE.kind:
403403
if getattr(x, 'tz', None) is not None:
404-
x = x.asobject.values
404+
x = x.astype(object).values
405405
else:
406406
shape = x.shape
407407
x = tslib.ints_to_pydatetime(x.view(np.int64).ravel(),
@@ -479,7 +479,7 @@ def _concat_index_asobject(to_concat, name=None):
479479
"""
480480

481481
klasses = ABCDatetimeIndex, ABCTimedeltaIndex, ABCPeriodIndex
482-
to_concat = [x.asobject if isinstance(x, klasses) else x
482+
to_concat = [x.astype(object) if isinstance(x, klasses) else x
483483
for x in to_concat]
484484

485485
from pandas import Index

pandas/core/frame.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3330,7 +3330,7 @@ class max type
33303330

33313331
def _maybe_casted_values(index, labels=None):
33323332
if isinstance(index, PeriodIndex):
3333-
values = index.asobject.values
3333+
values = index.astype(object).values
33343334
elif isinstance(index, DatetimeIndex) and index.tz is not None:
33353335
values = index
33363336
else:
@@ -5077,7 +5077,7 @@ def applymap(self, func):
50775077
def infer(x):
50785078
if x.empty:
50795079
return lib.map_infer(x, func)
5080-
return lib.map_infer(x.asobject, func)
5080+
return lib.map_infer(x.astype(object).values, func)
50815081

50825082
return self.apply(infer)
50835083

pandas/core/indexes/datetimelike.py

Lines changed: 15 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -242,6 +242,13 @@ def _box_values(self, values):
242242
"""
243243
return lib.map_infer(values, self._box_func)
244244

245+
def _box_values_as_index(self):
246+
"""
247+
return object Index which contains boxed values
248+
"""
249+
from pandas.core.index import Index
250+
return Index(self._box_values(self.asi8), name=self.name, dtype=object)
251+
245252
def _format_with_header(self, header, **kwargs):
246253
return header + list(self._format_native_types(**kwargs))
247254

@@ -360,7 +367,7 @@ def map(self, f):
360367
raise TypeError('The map function must return an Index object')
361368
return result
362369
except Exception:
363-
return self.asobject.map(f)
370+
return self.astype(object).map(f)
364371

365372
def sort_values(self, return_indexer=False, ascending=True):
366373
"""
@@ -424,13 +431,15 @@ def _isnan(self):
424431

425432
@property
426433
def asobject(self):
427-
"""
434+
"""DEPRECATED: Use ``astype(object)`` instead.
435+
428436
return object Index which contains boxed values
429437
430438
*this is an internal non-public method*
431439
"""
432-
from pandas.core.index import Index
433-
return Index(self._box_values(self.asi8), name=self.name, dtype=object)
440+
warnings.warn("'asobject' is deprecated. Use 'astype(object)'"
441+
" instead", FutureWarning, stacklevel=2)
442+
return self.astype(object)
434443

435444
def _convert_tolerance(self, tolerance, target):
436445
tolerance = np.asarray(to_timedelta(tolerance, box=False))
@@ -468,7 +477,7 @@ def tolist(self):
468477
"""
469478
return a list of the underlying data
470479
"""
471-
return list(self.asobject)
480+
return list(self.astype(object))
472481

473482
def min(self, axis=None, *args, **kwargs):
474483
"""
@@ -746,7 +755,7 @@ def isin(self, values):
746755
try:
747756
values = type(self)(values)
748757
except ValueError:
749-
return self.asobject.isin(values)
758+
return self.astype(object).isin(values)
750759

751760
return algorithms.isin(self.asi8, values.asi8)
752761

pandas/core/indexes/datetimes.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -907,7 +907,7 @@ def to_datetime(self, dayfirst=False):
907907
def astype(self, dtype, copy=True):
908908
dtype = pandas_dtype(dtype)
909909
if is_object_dtype(dtype):
910-
return self.asobject
910+
return self._box_values_as_index()
911911
elif is_integer_dtype(dtype):
912912
return Index(self.values.astype('i8', copy=copy), name=self.name,
913913
dtype='i8')
@@ -1679,7 +1679,7 @@ def time(self):
16791679
Returns numpy array of datetime.time. The time part of the Timestamps.
16801680
"""
16811681
return self._maybe_mask_results(libalgos.arrmap_object(
1682-
self.asobject.values,
1682+
self.astype(object).values,
16831683
lambda x: np.nan if x is libts.NaT else x.time()))
16841684

16851685
@property
@@ -1789,7 +1789,7 @@ def insert(self, loc, item):
17891789

17901790
# fall back to object index
17911791
if isinstance(item, compat.string_types):
1792-
return self.asobject.insert(loc, item)
1792+
return self.astype(object).insert(loc, item)
17931793
raise TypeError(
17941794
"cannot insert DatetimeIndex with incompatible label")
17951795

pandas/core/indexes/period.py

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -418,7 +418,7 @@ def _int64index(self):
418418

419419
@property
420420
def values(self):
421-
return self.asobject.values
421+
return self.astype(object).values
422422

423423
@property
424424
def _values(self):
@@ -428,7 +428,7 @@ def __array__(self, dtype=None):
428428
if is_integer_dtype(dtype):
429429
return self.asi8
430430
else:
431-
return self.asobject.values
431+
return self.astype(object).values
432432

433433
def __array_wrap__(self, result, context=None):
434434
"""
@@ -476,7 +476,7 @@ def _to_embed(self, keep_tz=False, dtype=None):
476476
if dtype is not None:
477477
return self.astype(dtype)._to_embed(keep_tz=keep_tz)
478478

479-
return self.asobject.values
479+
return self.astype(object).values
480480

481481
@property
482482
def _formatter_func(self):
@@ -506,7 +506,7 @@ def asof_locs(self, where, mask):
506506
def astype(self, dtype, copy=True, how='start'):
507507
dtype = pandas_dtype(dtype)
508508
if is_object_dtype(dtype):
509-
return self.asobject
509+
return self._box_values_as_index()
510510
elif is_integer_dtype(dtype):
511511
if copy:
512512
return self._int64index.copy()
@@ -656,7 +656,7 @@ def end_time(self):
656656

657657
def _mpl_repr(self):
658658
# how to represent ourselves to matplotlib
659-
return self.asobject.values
659+
return self.astype(object).values
660660

661661
def to_timestamp(self, freq=None, how='start'):
662662
"""
@@ -971,7 +971,7 @@ def _convert_tolerance(self, tolerance, target):
971971

972972
def insert(self, loc, item):
973973
if not isinstance(item, Period) or self.freq != item.freq:
974-
return self.asobject.insert(loc, item)
974+
return self.astype(object).insert(loc, item)
975975

976976
idx = np.concatenate((self[:loc].asi8, np.array([item.ordinal]),
977977
self[loc:].asi8))
@@ -1018,7 +1018,7 @@ def _apply_meta(self, rawarr):
10181018
def _format_native_types(self, na_rep=u('NaT'), date_format=None,
10191019
**kwargs):
10201020

1021-
values = self.asobject.values
1021+
values = self.astype(object).values
10221022

10231023
if date_format:
10241024
formatter = lambda dt: dt.strftime(date_format)

0 commit comments

Comments
 (0)