Skip to content

Commit 2ffb748

Browse files
authored
DEPR: to_native_types, set_value, iteritems, union_many, to_perioddelta (#49244)
* DEPR: to_native_types, set_value, iteritems, union_many, to_perioddelta * remove more * missing tick * remove duplicate note
1 parent 5b1fbcb commit 2ffb748

File tree

20 files changed

+8
-377
lines changed

20 files changed

+8
-377
lines changed

doc/redirects.csv

-7
Original file line numberDiff line numberDiff line change
@@ -398,10 +398,8 @@ generated/pandas.DataFrame.isna,../reference/api/pandas.DataFrame.isna
398398
generated/pandas.DataFrame.isnull,../reference/api/pandas.DataFrame.isnull
399399
generated/pandas.DataFrame.items,../reference/api/pandas.DataFrame.items
400400
generated/pandas.DataFrame.__iter__,../reference/api/pandas.DataFrame.__iter__
401-
generated/pandas.DataFrame.iteritems,../reference/api/pandas.DataFrame.iteritems
402401
generated/pandas.DataFrame.iterrows,../reference/api/pandas.DataFrame.iterrows
403402
generated/pandas.DataFrame.itertuples,../reference/api/pandas.DataFrame.itertuples
404-
generated/pandas.DataFrame.ix,../reference/api/pandas.DataFrame.ix
405403
generated/pandas.DataFrame.join,../reference/api/pandas.DataFrame.join
406404
generated/pandas.DataFrame.keys,../reference/api/pandas.DataFrame.keys
407405
generated/pandas.DataFrame.kurt,../reference/api/pandas.DataFrame.kurt
@@ -569,7 +567,6 @@ generated/pandas.DatetimeIndex.strftime,../reference/api/pandas.DatetimeIndex.st
569567
generated/pandas.DatetimeIndex.time,../reference/api/pandas.DatetimeIndex.time
570568
generated/pandas.DatetimeIndex.timetz,../reference/api/pandas.DatetimeIndex.timetz
571569
generated/pandas.DatetimeIndex.to_frame,../reference/api/pandas.DatetimeIndex.to_frame
572-
generated/pandas.DatetimeIndex.to_perioddelta,../reference/api/pandas.DatetimeIndex.to_perioddelta
573570
generated/pandas.DatetimeIndex.to_period,../reference/api/pandas.DatetimeIndex.to_period
574571
generated/pandas.DatetimeIndex.to_pydatetime,../reference/api/pandas.DatetimeIndex.to_pydatetime
575572
generated/pandas.DatetimeIndex.to_series,../reference/api/pandas.DatetimeIndex.to_series
@@ -702,7 +699,6 @@ generated/pandas.Index.rename,../reference/api/pandas.Index.rename
702699
generated/pandas.Index.repeat,../reference/api/pandas.Index.repeat
703700
generated/pandas.Index.searchsorted,../reference/api/pandas.Index.searchsorted
704701
generated/pandas.Index.set_names,../reference/api/pandas.Index.set_names
705-
generated/pandas.Index.set_value,../reference/api/pandas.Index.set_value
706702
generated/pandas.Index.shape,../reference/api/pandas.Index.shape
707703
generated/pandas.Index.shift,../reference/api/pandas.Index.shift
708704
generated/pandas.Index.size,../reference/api/pandas.Index.size
@@ -721,7 +717,6 @@ generated/pandas.Index.to_flat_index,../reference/api/pandas.Index.to_flat_index
721717
generated/pandas.Index.to_frame,../reference/api/pandas.Index.to_frame
722718
generated/pandas.Index.to_list,../reference/api/pandas.Index.to_list
723719
generated/pandas.Index.tolist,../reference/api/pandas.Index.tolist
724-
generated/pandas.Index.to_native_types,../reference/api/pandas.Index.to_native_types
725720
generated/pandas.Index.to_numpy,../reference/api/pandas.Index.to_numpy
726721
generated/pandas.Index.to_series,../reference/api/pandas.Index.to_series
727722
generated/pandas.Index.transpose,../reference/api/pandas.Index.transpose
@@ -1081,8 +1076,6 @@ generated/pandas.Series.is_unique,../reference/api/pandas.Series.is_unique
10811076
generated/pandas.Series.item,../reference/api/pandas.Series.item
10821077
generated/pandas.Series.items,../reference/api/pandas.Series.items
10831078
generated/pandas.Series.__iter__,../reference/api/pandas.Series.__iter__
1084-
generated/pandas.Series.iteritems,../reference/api/pandas.Series.iteritems
1085-
generated/pandas.Series.ix,../reference/api/pandas.Series.ix
10861079
generated/pandas.Series.keys,../reference/api/pandas.Series.keys
10871080
generated/pandas.Series.kurt,../reference/api/pandas.Series.kurt
10881081
generated/pandas.Series.kurtosis,../reference/api/pandas.Series.kurtosis

doc/source/reference/frame.rst

-1
Original file line numberDiff line numberDiff line change
@@ -63,7 +63,6 @@ Indexing, iteration
6363
DataFrame.insert
6464
DataFrame.__iter__
6565
DataFrame.items
66-
DataFrame.iteritems
6766
DataFrame.keys
6867
DataFrame.iterrows
6968
DataFrame.itertuples

doc/source/reference/indexing.rst

-2
Original file line numberDiff line numberDiff line change
@@ -110,7 +110,6 @@ Conversion
110110
Index.map
111111
Index.ravel
112112
Index.to_list
113-
Index.to_native_types
114113
Index.to_series
115114
Index.to_frame
116115
Index.view
@@ -393,7 +392,6 @@ Conversion
393392
:toctree: api/
394393

395394
DatetimeIndex.to_period
396-
DatetimeIndex.to_perioddelta
397395
DatetimeIndex.to_pydatetime
398396
DatetimeIndex.to_series
399397
DatetimeIndex.to_frame

doc/source/reference/series.rst

-1
Original file line numberDiff line numberDiff line change
@@ -66,7 +66,6 @@ Indexing, iteration
6666
Series.iloc
6767
Series.__iter__
6868
Series.items
69-
Series.iteritems
7069
Series.keys
7170
Series.pop
7271
Series.item

doc/source/whatsnew/v2.0.0.rst

+6
Original file line numberDiff line numberDiff line change
@@ -166,6 +166,12 @@ Removal of prior version deprecations/changes
166166
- Removed deprecated :meth:`Index.is_mixed`, check ``index.inferred_type`` directly instead (:issue:`32922`)
167167
- Removed deprecated :func:`pandas.api.types.is_categorical`; use :func:`pandas.api.types.is_categorical_dtype` instead (:issue:`33385`)
168168
- Removed deprecated :meth:`Index.asi8` (:issue:`37877`)
169+
- Removed deprecated :meth:`DataFrame._AXIS_NUMBERS`, :meth:`DataFrame._AXIS_NAMES`, :meth:`Series._AXIS_NUMBERS`, :meth:`Series._AXIS_NAMES` (:issue:`33637`)
170+
- Removed deprecated :meth:`Index.to_native_types`, use ``obj.astype(str)`` instead (:issue:`36418`)
171+
- Removed deprecated :meth:`Series.iteritems`, :meth:`DataFrame.iteritems`, use ``obj.items`` instead (:issue:`45321`)
172+
- Removed deprecated :meth:`DatetimeIndex.union_many` (:issue:`45018`)
173+
- Removed deprecated :meth:`RangeIndex._start`, :meth:`RangeIndex._stop`, :meth:`RangeIndex._step`, use ``start``, ``stop``, ``step`` instead (:issue:`30482`)
174+
- Removed deprecated :meth:`DatetimeIndex.to_perioddelta`, Use ``dtindex - dtindex.to_period(freq).to_timestamp()`` instead (:issue:`34853`)
169175
- Enforced deprecation disallowing passing a timezone-aware :class:`Timestamp` and ``dtype="datetime64[ns]"`` to :class:`Series` or :class:`DataFrame` constructors (:issue:`41555`)
170176
- Enforced deprecation disallowing passing a sequence of timezone-aware values and ``dtype="datetime64[ns]"`` to to :class:`Series` or :class:`DataFrame` constructors (:issue:`41555`)
171177
- Enforced deprecation disallowing using ``.astype`` to convert a ``datetime64[ns]`` :class:`Series`, :class:`DataFrame`, or :class:`DatetimeIndex` to timezone-aware dtype, use ``obj.tz_localize`` or ``ser.dt.tz_localize`` instead (:issue:`39258`)

pandas/core/arrays/datetimes.py

+1-36
Original file line numberDiff line numberDiff line change
@@ -89,10 +89,7 @@
8989
if TYPE_CHECKING:
9090

9191
from pandas import DataFrame
92-
from pandas.core.arrays import (
93-
PeriodArray,
94-
TimedeltaArray,
95-
)
92+
from pandas.core.arrays import PeriodArray
9693

9794
_midnight = time(0, 0)
9895

@@ -1194,38 +1191,6 @@ def to_period(self, freq=None) -> PeriodArray:
11941191

11951192
return PeriodArray._from_datetime64(self._ndarray, freq, tz=self.tz)
11961193

1197-
def to_perioddelta(self, freq) -> TimedeltaArray:
1198-
"""
1199-
Calculate deltas between self values and self converted to Periods at a freq.
1200-
1201-
Used for vectorized offsets.
1202-
1203-
Parameters
1204-
----------
1205-
freq : Period frequency
1206-
1207-
Returns
1208-
-------
1209-
TimedeltaArray/Index
1210-
"""
1211-
# Deprecaation GH#34853
1212-
warnings.warn(
1213-
"to_perioddelta is deprecated and will be removed in a "
1214-
"future version. "
1215-
"Use `dtindex - dtindex.to_period(freq).to_timestamp()` instead.",
1216-
FutureWarning,
1217-
# stacklevel chosen to be correct for when called from DatetimeIndex
1218-
stacklevel=find_stack_level(),
1219-
)
1220-
from pandas.core.arrays.timedeltas import TimedeltaArray
1221-
1222-
if self._ndarray.dtype != "M8[ns]":
1223-
raise NotImplementedError("Only supported for nanosecond resolution.")
1224-
1225-
i8delta = self.asi8 - self.to_period(freq).to_timestamp().asi8
1226-
m8delta = i8delta.view("m8[ns]")
1227-
return TimedeltaArray(m8delta)
1228-
12291194
# -----------------------------------------------------------------
12301195
# Properties - Vectorized Timestamp Properties/Methods
12311196

pandas/core/frame.py

-50
Original file line numberDiff line numberDiff line change
@@ -1328,44 +1328,6 @@ def items(self) -> Iterable[tuple[Hashable, Series]]:
13281328
for i, k in enumerate(self.columns):
13291329
yield k, self._ixs(i, axis=1)
13301330

1331-
_shared_docs[
1332-
"iteritems"
1333-
] = r"""
1334-
Iterate over (column name, Series) pairs.
1335-
1336-
.. deprecated:: 1.5.0
1337-
iteritems is deprecated and will be removed in a future version.
1338-
Use .items instead.
1339-
1340-
Iterates over the DataFrame columns, returning a tuple with
1341-
the column name and the content as a Series.
1342-
1343-
Yields
1344-
------
1345-
label : object
1346-
The column names for the DataFrame being iterated over.
1347-
content : Series
1348-
The column entries belonging to each label, as a Series.
1349-
1350-
See Also
1351-
--------
1352-
DataFrame.iter : Recommended alternative.
1353-
DataFrame.iterrows : Iterate over DataFrame rows as
1354-
(index, Series) pairs.
1355-
DataFrame.itertuples : Iterate over DataFrame rows as namedtuples
1356-
of the values.
1357-
"""
1358-
1359-
@Appender(_shared_docs["iteritems"])
1360-
def iteritems(self) -> Iterable[tuple[Hashable, Series]]:
1361-
warnings.warn(
1362-
"iteritems is deprecated and will be removed in a future version. "
1363-
"Use .items instead.",
1364-
FutureWarning,
1365-
stacklevel=find_stack_level(),
1366-
)
1367-
yield from self.items()
1368-
13691331
def iterrows(self) -> Iterable[tuple[Hashable, Series]]:
13701332
"""
13711333
Iterate over DataFrame rows as (index, Series) pairs.
@@ -11624,18 +11586,6 @@ def isin(self, values: Series | DataFrame | Sequence | Mapping) -> DataFrame:
1162411586
)
1162511587
columns = properties.AxisProperty(axis=0, doc="The column labels of the DataFrame.")
1162611588

11627-
@property
11628-
def _AXIS_NUMBERS(self) -> dict[str, int]:
11629-
""".. deprecated:: 1.1.0"""
11630-
super()._AXIS_NUMBERS
11631-
return {"index": 0, "columns": 1}
11632-
11633-
@property
11634-
def _AXIS_NAMES(self) -> dict[int, str]:
11635-
""".. deprecated:: 1.1.0"""
11636-
super()._AXIS_NAMES
11637-
return {0: "index", 1: "columns"}
11638-
1163911589
# ----------------------------------------------------------------------
1164011590
# Add plotting methods to DataFrame
1164111591
plot = CachedAccessor("plot", pandas.plotting.PlotAccessor)

pandas/core/generic.py

-19
Original file line numberDiff line numberDiff line change
@@ -494,25 +494,6 @@ def _data(self):
494494
_info_axis_name: Literal["index", "columns"]
495495
_AXIS_LEN: int
496496

497-
@property
498-
def _AXIS_NUMBERS(self) -> dict[str, int]:
499-
""".. deprecated:: 1.1.0"""
500-
warnings.warn(
501-
"_AXIS_NUMBERS has been deprecated.",
502-
FutureWarning,
503-
stacklevel=find_stack_level(),
504-
)
505-
return {"index": 0}
506-
507-
@property
508-
def _AXIS_NAMES(self) -> dict[int, str]:
509-
""".. deprecated:: 1.1.0"""
510-
level = self.ndim + 1
511-
warnings.warn(
512-
"_AXIS_NAMES has been deprecated.", FutureWarning, stacklevel=level
513-
)
514-
return {0: "index"}
515-
516497
@final
517498
def _construct_axes_dict(self, axes: Sequence[Axis] | None = None, **kwargs):
518499
"""Return an axes dictionary for myself."""

pandas/core/indexes/base.py

-39
Original file line numberDiff line numberDiff line change
@@ -1460,45 +1460,6 @@ def _format_with_header(self, header: list[str_t], na_rep: str_t) -> list[str_t]
14601460
result = trim_front(format_array(values, None, justify="left"))
14611461
return header + result
14621462

1463-
@final
1464-
def to_native_types(self, slicer=None, **kwargs) -> np.ndarray:
1465-
"""
1466-
Format specified values of `self` and return them.
1467-
1468-
.. deprecated:: 1.2.0
1469-
1470-
Parameters
1471-
----------
1472-
slicer : int, array-like
1473-
An indexer into `self` that specifies which values
1474-
are used in the formatting process.
1475-
kwargs : dict
1476-
Options for specifying how the values should be formatted.
1477-
These options include the following:
1478-
1479-
1) na_rep : str
1480-
The value that serves as a placeholder for NULL values
1481-
2) quoting : bool or None
1482-
Whether or not there are quoted values in `self`
1483-
3) date_format : str
1484-
The format used to represent date-like values.
1485-
1486-
Returns
1487-
-------
1488-
numpy.ndarray
1489-
Formatted values.
1490-
"""
1491-
warnings.warn(
1492-
"The 'to_native_types' method is deprecated and will be removed in "
1493-
"a future version. Use 'astype(str)' instead.",
1494-
FutureWarning,
1495-
stacklevel=find_stack_level(),
1496-
)
1497-
values = self
1498-
if slicer is not None:
1499-
values = values[slicer]
1500-
return values._format_native_types(**kwargs)
1501-
15021463
def _format_native_types(
15031464
self, *, na_rep: str_t = "", quoting=None, **kwargs
15041465
) -> npt.NDArray[np.object_]:

pandas/core/indexes/datetimes.py

-47
Original file line numberDiff line numberDiff line change
@@ -63,7 +63,6 @@
6363
import pandas.core.common as com
6464
from pandas.core.indexes.base import (
6565
Index,
66-
get_unanimous_names,
6766
maybe_extract_name,
6867
)
6968
from pandas.core.indexes.datetimelike import DatetimeTimedeltaMixin
@@ -75,7 +74,6 @@
7574
DataFrame,
7675
Float64Index,
7776
PeriodIndex,
78-
TimedeltaIndex,
7977
)
8078

8179

@@ -229,7 +227,6 @@ class DatetimeIndex(DatetimeTimedeltaMixin):
229227
floor
230228
ceil
231229
to_period
232-
to_perioddelta
233230
to_pydatetime
234231
to_series
235232
to_frame
@@ -295,13 +292,6 @@ def to_period(self, freq=None) -> PeriodIndex:
295292
arr = self._data.to_period(freq)
296293
return PeriodIndex._simple_new(arr, name=self.name)
297294

298-
@doc(DatetimeArray.to_perioddelta)
299-
def to_perioddelta(self, freq) -> TimedeltaIndex:
300-
from pandas.core.indexes.api import TimedeltaIndex
301-
302-
arr = self._data.to_perioddelta(freq)
303-
return TimedeltaIndex._simple_new(arr, name=self.name)
304-
305295
@doc(DatetimeArray.to_julian_date)
306296
def to_julian_date(self) -> Float64Index:
307297
from pandas.core.indexes.api import Float64Index
@@ -439,43 +429,6 @@ def _can_range_setop(self, other) -> bool:
439429
return False
440430
return super()._can_range_setop(other)
441431

442-
def union_many(self, others):
443-
"""
444-
A bit of a hack to accelerate unioning a collection of indexes.
445-
"""
446-
warnings.warn(
447-
"DatetimeIndex.union_many is deprecated and will be removed in "
448-
"a future version. Use obj.union instead.",
449-
FutureWarning,
450-
stacklevel=find_stack_level(),
451-
)
452-
453-
this = self
454-
455-
for other in others:
456-
if not isinstance(this, DatetimeIndex):
457-
this = Index.union(this, other)
458-
continue
459-
460-
if not isinstance(other, DatetimeIndex):
461-
try:
462-
other = DatetimeIndex(other)
463-
except TypeError:
464-
pass
465-
466-
this, other = this._maybe_utc_convert(other)
467-
468-
if len(self) and len(other) and this._can_fast_union(other):
469-
# union already has fastpath handling for empty cases
470-
this = this._fast_union(other)
471-
else:
472-
this = Index.union(this, other)
473-
474-
res_name = get_unanimous_names(self, *others)[0]
475-
if this.name != res_name:
476-
return this.rename(res_name)
477-
return this
478-
479432
def _maybe_utc_convert(self, other: Index) -> tuple[DatetimeIndex, Index]:
480433
this = self
481434

pandas/core/indexes/numeric.py

-12
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,6 @@
44
Callable,
55
Hashable,
66
)
7-
import warnings
87

98
import numpy as np
109

@@ -20,7 +19,6 @@
2019
cache_readonly,
2120
doc,
2221
)
23-
from pandas.util._exceptions import find_stack_level
2422

2523
from pandas.core.dtypes.common import (
2624
is_dtype_equal,
@@ -356,16 +354,6 @@ class IntegerIndex(NumericIndex):
356354

357355
_is_backward_compat_public_numeric_index: bool = False
358356

359-
@property
360-
def asi8(self) -> npt.NDArray[np.int64]:
361-
# do not cache or you'll create a memory leak
362-
warnings.warn(
363-
"Index.asi8 is deprecated and will be removed in a future version.",
364-
FutureWarning,
365-
stacklevel=find_stack_level(),
366-
)
367-
return self._values.view(self._default_dtype)
368-
369357

370358
class Int64Index(IntegerIndex):
371359
_index_descr_args = {

0 commit comments

Comments
 (0)