Skip to content

Commit 8915c5c

Browse files
committed
DEPR: deprecate (DataFrame|Series).iteritems
1 parent c74a853 commit 8915c5c

File tree

31 files changed

+73
-66
lines changed

31 files changed

+73
-66
lines changed

asv_bench/benchmarks/frame_methods.py

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -115,15 +115,15 @@ def setup(self):
115115
)
116116
self.df4 = DataFrame(np.random.randn(N * 1000, 10))
117117

118-
def time_iteritems(self):
118+
def time_items(self):
119119
# (monitor no-copying behaviour)
120120
if hasattr(self.df, "_item_cache"):
121121
self.df._item_cache.clear()
122-
for name, col in self.df.iteritems():
122+
for name, col in self.df.items():
123123
pass
124124

125-
def time_iteritems_cached(self):
126-
for name, col in self.df.iteritems():
125+
def time_items_cached(self):
126+
for name, col in self.df.items():
127127
pass
128128

129129
def time_iteritems_indexing(self):

doc/source/development/contributing_docstring.rst

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -522,7 +522,7 @@ examples:
522522
* ``loc`` and ``iloc``, as they do the same, but in one case providing indices
523523
and in the other positions
524524
* ``max`` and ``min``, as they do the opposite
525-
* ``iterrows``, ``itertuples`` and ``iteritems``, as it is easy that a user
525+
* ``iterrows``, ``itertuples`` and ``items``, as it is easy that a user
526526
looking for the method to iterate over columns ends up in the method to
527527
iterate over rows, and vice-versa
528528
* ``fillna`` and ``dropna``, as both methods are used to handle missing values

doc/source/getting_started/basics.rst

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1475,7 +1475,7 @@ Thus, for example, iterating over a DataFrame gives you the column names:
14751475
print(col)
14761476
14771477
1478-
Pandas objects also have the dict-like :meth:`~DataFrame.iteritems` method to
1478+
Pandas objects also have the dict-like :meth:`~DataFrame.items` method to
14791479
iterate over the (key, value) pairs.
14801480

14811481
To iterate over the rows of a DataFrame, you can use the following methods:
@@ -1524,10 +1524,10 @@ To iterate over the rows of a DataFrame, you can use the following methods:
15241524
15251525
df
15261526
1527-
iteritems
1527+
items
15281528
~~~~~~~~~
15291529

1530-
Consistent with the dict-like interface, :meth:`~DataFrame.iteritems` iterates
1530+
Consistent with the dict-like interface, :meth:`~DataFrame.items` iterates
15311531
through key-value pairs:
15321532

15331533
* **Series**: (index, scalar value) pairs
@@ -1537,7 +1537,7 @@ For example:
15371537

15381538
.. ipython:: python
15391539
1540-
for label, ser in df.iteritems():
1540+
for label, ser in df.items():
15411541
print(label)
15421542
print(ser)
15431543

doc/source/reference/frame.rst

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -68,7 +68,7 @@ Indexing, iteration
6868
DataFrame.__iter__
6969
DataFrame.items
7070
DataFrame.keys
71-
DataFrame.iteritems
71+
DataFrame.items
7272
DataFrame.iterrows
7373
DataFrame.itertuples
7474
DataFrame.lookup

doc/source/reference/series.rst

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -76,7 +76,6 @@ Indexing, iteration
7676
Series.loc
7777
Series.iloc
7878
Series.__iter__
79-
Series.iteritems
8079
Series.items
8180
Series.keys
8281
Series.pop

doc/source/whatsnew/v0.25.0.rst

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -886,9 +886,11 @@ Other deprecations
886886
- :meth:`Index.item` and :meth:`Series.item` is deprecated. (:issue:`18262`)
887887
- The default value ``ordered=None`` in :class:`~pandas.api.types.CategoricalDtype` has been deprecated in favor of ``ordered=False``. When converting between categorical types ``ordered=True`` must be explicitly passed in order to be preserved. (:issue:`26336`)
888888
- :meth:`Index.contains` is deprecated. Use ``key in index`` (``__contains__``) instead (:issue:`17753`).
889+
- ``DataFrame.iteritems`` and ``Series.iteritems`` have been deprecated. :attr:`DataFrame.items` and :attr:`Series.items` provide the exact same functionality and should be used instead (:issue:`26114`).
889890
- :meth:`DataFrame.get_dtype_counts` is deprecated. (:issue:`18262`)
890891
- :meth:`Categorical.ravel` will return a :class:`Categorical` instead of a ``np.ndarray`` (:issue:`27199`)
891892
893+
892894
.. _whatsnew_0250.prior_deprecations:
893895
894896
Removal of prior version deprecations/changes

pandas/core/frame.py

Lines changed: 12 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -771,7 +771,7 @@ def style(self):
771771

772772
return Styler(self)
773773

774-
def iteritems(self):
774+
def items(self):
775775
r"""
776776
Iterator over (column name, Series) pairs.
777777
@@ -802,7 +802,7 @@ def iteritems(self):
802802
panda bear 1864
803803
polar bear 22000
804804
koala marsupial 80000
805-
>>> for label, content in df.iteritems():
805+
>>> for label, content in df.items():
806806
... print('label:', label)
807807
... print('content:', content, sep='\n')
808808
...
@@ -826,6 +826,10 @@ def iteritems(self):
826826
for i, k in enumerate(self.columns):
827827
yield k, self._ixs(i, axis=1)
828828

829+
@Appender(items.__doc)
830+
def iteritems(self):
831+
return self.items()
832+
829833
def iterrows(self):
830834
"""
831835
Iterate over DataFrame rows as (index, Series) pairs.
@@ -843,7 +847,7 @@ def iterrows(self):
843847
See Also
844848
--------
845849
itertuples : Iterate over DataFrame rows as namedtuples of the values.
846-
iteritems : Iterate over (column name, Series) pairs.
850+
items : Iterate over (column name, Series) pairs.
847851
848852
Notes
849853
-----
@@ -901,7 +905,7 @@ def itertuples(self, index=True, name="Pandas"):
901905
--------
902906
DataFrame.iterrows : Iterate over DataFrame rows as (index, Series)
903907
pairs.
904-
DataFrame.iteritems : Iterate over (column name, Series) pairs.
908+
DataFrame.items : Iterate over (column name, Series) pairs.
905909
906910
Notes
907911
-----
@@ -958,8 +962,6 @@ def itertuples(self, index=True, name="Pandas"):
958962
# fallback to regular tuples
959963
return zip(*arrays)
960964

961-
items = iteritems
962-
963965
def __len__(self):
964966
"""
965967
Returns length of info axis, but here we use the index.
@@ -2634,7 +2636,7 @@ def memory_usage(self, index=True, deep=False):
26342636
5216
26352637
"""
26362638
result = Series(
2637-
[c.memory_usage(index=False, deep=deep) for col, c in self.iteritems()],
2639+
[c.memory_usage(index=False, deep=deep) for col, c in self.items()],
26382640
index=self.columns,
26392641
)
26402642
if index:
@@ -4955,7 +4957,7 @@ def f(vals):
49554957
if not diff.empty:
49564958
raise KeyError(diff)
49574959

4958-
vals = (col.values for name, col in self.iteritems() if name in subset)
4960+
vals = (col.values for name, col in self.items() if name in subset)
49594961
labels, shape = map(list, zip(*map(f, vals)))
49604962

49614963
ids = get_group_index(labels, shape, sort=False, xnull=False)
@@ -7343,7 +7345,7 @@ def round(self, decimals=0, *args, **kwargs):
73437345
from pandas.core.reshape.concat import concat
73447346

73457347
def _dict_round(df, decimals):
7346-
for col, vals in df.iteritems():
7348+
for col, vals in df.items():
73477349
try:
73487350
yield _series_round(vals, decimals[col])
73497351
except KeyError:
@@ -7363,7 +7365,7 @@ def _series_round(s, decimals):
73637365
new_cols = [col for col in _dict_round(self, decimals)]
73647366
elif is_integer(decimals):
73657367
# Dispatch to Series.round
7366-
new_cols = [_series_round(v, decimals) for _, v in self.iteritems()]
7368+
new_cols = [_series_round(v, decimals) for _, v in self.items()]
73677369
else:
73687370
raise TypeError("decimals must be an integer, a dict-like or a " "Series")
73697371

pandas/core/generic.py

Lines changed: 10 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -494,7 +494,7 @@ def _get_space_character_free_column_resolvers(self):
494494
"""
495495
from pandas.core.computation.common import _remove_spaces_column_name
496496

497-
return {_remove_spaces_column_name(k): v for k, v in self.iteritems()}
497+
return {_remove_spaces_column_name(k): v for k, v in self.items()}
498498

499499
@property
500500
def _info_axis(self):
@@ -1936,15 +1936,18 @@ def keys(self):
19361936
"""
19371937
return self._info_axis
19381938

1939-
def iteritems(self):
1940-
"""
1941-
Iterate over (label, values) on info axis
1939+
def items(self):
1940+
"""Iterate over (label, values) on info axis
19421941
1943-
This is index for Series, columns for DataFrame and so on.
1942+
This is index for Series and columns for DataFrame.
19441943
"""
19451944
for h in self._info_axis:
19461945
yield h, self[h]
19471946

1947+
@Appender(items.__doc__)
1948+
def iteritems(self):
1949+
return self.items()
1950+
19481951
def __len__(self):
19491952
"""Returns length of info axis"""
19501953
return len(self._info_axis)
@@ -5912,7 +5915,7 @@ def astype(self, dtype, copy=True, errors="raise", **kwargs):
59125915
"key in a dtype mappings argument."
59135916
)
59145917
results = []
5915-
for col_name, col in self.iteritems():
5918+
for col_name, col in self.items():
59165919
if col_name in dtype:
59175920
results.append(
59185921
col.astype(
@@ -10328,7 +10331,7 @@ def describe_1d(data):
1032810331
else:
1032910332
data = self.select_dtypes(include=include, exclude=exclude)
1033010333

10331-
ldesc = [describe_1d(s) for _, s in data.iteritems()]
10334+
ldesc = [describe_1d(s) for _, s in data.items()]
1033210335
# set a convenient order for rows
1033310336
names = []
1033410337
ldesc_indexes = sorted((x.index for x in ldesc), key=len)

pandas/core/indexes/multi.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -601,7 +601,7 @@ def from_frame(cls, df, sortorder=None, names=None):
601601
if not isinstance(df, ABCDataFrame):
602602
raise TypeError("Input must be a DataFrame")
603603

604-
column_names, columns = zip(*df.iteritems())
604+
column_names, columns = zip(*df.items())
605605
names = column_names if names is None else names
606606
return cls.from_arrays(columns, sortorder=sortorder, names=names)
607607

pandas/core/reshape/pivot.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -272,7 +272,7 @@ def _compute_grand_margin(data, values, aggfunc, margins_name="All"):
272272

273273
if values:
274274
grand_margin = {}
275-
for k, v in data[values].iteritems():
275+
for k, v in data[values].items():
276276
try:
277277
if isinstance(aggfunc, str):
278278
grand_margin[k] = getattr(v, aggfunc)()

0 commit comments

Comments
 (0)