Skip to content

Commit 4aa5343

Browse files
committed
DEPR: deprecate (DataFrame|Series).iteritems
1 parent c407b73 commit 4aa5343

File tree

30 files changed

+89
-77
lines changed

30 files changed

+89
-77
lines changed

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
@@ -1474,7 +1474,7 @@ Thus, for example, iterating over a DataFrame gives you the column names:
14741474
print(col)
14751475
14761476
1477-
Pandas objects also have the dict-like :meth:`~DataFrame.iteritems` method to
1477+
Pandas objects also have the dict-like :meth:`~DataFrame.items` method to
14781478
iterate over the (key, value) pairs.
14791479

14801480
To iterate over the rows of a DataFrame, you can use the following methods:
@@ -1523,10 +1523,10 @@ To iterate over the rows of a DataFrame, you can use the following methods:
15231523
15241524
df
15251525
1526-
iteritems
1526+
items
15271527
~~~~~~~~~
15281528

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

15321532
* **Series**: (index, scalar value) pairs
@@ -1536,7 +1536,7 @@ For example:
15361536

15371537
.. ipython:: python
15381538
1539-
for label, ser in df.iteritems():
1539+
for label, ser in df.items():
15401540
print(label)
15411541
print(ser)
15421542

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
@@ -762,6 +762,8 @@ Other deprecations
762762
- :meth:`Series.put` is deprecated. (:issue:`18262`)
763763
- :meth:`Index.item` and :meth:`Series.item` is deprecated. (:issue:`18262`)
764764
- :meth:`Index.contains` is deprecated. Use ``key in index`` (``__contains__``) instead (:issue:`17753`).
765+
- ``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`).
766+
765767
766768
.. _whatsnew_0250.prior_deprecations:
767769

pandas/core/frame.py

Lines changed: 14 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -689,7 +689,7 @@ def style(self):
689689
from pandas.io.formats.style import Styler
690690
return Styler(self)
691691

692-
def iteritems(self):
692+
def items(self):
693693
r"""
694694
Iterator over (column name, Series) pairs.
695695
@@ -720,7 +720,7 @@ def iteritems(self):
720720
panda bear 1864
721721
polar bear 22000
722722
koala marsupial 80000
723-
>>> for label, content in df.iteritems():
723+
>>> for label, content in df.items():
724724
... print('label:', label)
725725
... print('content:', content, sep='\n')
726726
...
@@ -761,7 +761,7 @@ def iterrows(self):
761761
See Also
762762
--------
763763
itertuples : Iterate over DataFrame rows as namedtuples of the values.
764-
iteritems : Iterate over (column name, Series) pairs.
764+
items : Iterate over (column name, Series) pairs.
765765
766766
Notes
767767
-----
@@ -819,7 +819,7 @@ def itertuples(self, index=True, name="Pandas"):
819819
--------
820820
DataFrame.iterrows : Iterate over DataFrame rows as (index, Series)
821821
pairs.
822-
DataFrame.iteritems : Iterate over (column name, Series) pairs.
822+
DataFrame.items : Iterate over (column name, Series) pairs.
823823
824824
Notes
825825
-----
@@ -876,7 +876,12 @@ def itertuples(self, index=True, name="Pandas"):
876876
# fallback to regular tuples
877877
return zip(*arrays)
878878

879-
items = iteritems
879+
@Appender(_shared_docs["iteritems"] % _shared_doc_kwargs)
880+
def iteritems(self):
881+
warnings.warn("'iteritems' is deprecated and will be removed in a "
882+
"future version. Please use `items` instead.",
883+
FutureWarning, stacklevel=2)
884+
return self.items()
880885

881886
def __len__(self):
882887
"""
@@ -2437,7 +2442,7 @@ def memory_usage(self, index=True, deep=False):
24372442
5216
24382443
"""
24392444
result = Series([c.memory_usage(index=False, deep=deep)
2440-
for col, c in self.iteritems()], index=self.columns)
2445+
for col, c in self.items()], index=self.columns)
24412446
if index:
24422447
result = Series(self.index.memory_usage(deep=deep),
24432448
index=['Index']).append(result)
@@ -4640,7 +4645,7 @@ def f(vals):
46404645
if not diff.empty:
46414646
raise KeyError(diff)
46424647

4643-
vals = (col.values for name, col in self.iteritems()
4648+
vals = (col.values for name, col in self.items()
46444649
if name in subset)
46454650
labels, shape = map(list, zip(*map(f, vals)))
46464651

@@ -6913,7 +6918,7 @@ def round(self, decimals=0, *args, **kwargs):
69136918
from pandas.core.reshape.concat import concat
69146919

69156920
def _dict_round(df, decimals):
6916-
for col, vals in df.iteritems():
6921+
for col, vals in df.items():
69176922
try:
69186923
yield _series_round(vals, decimals[col])
69196924
except KeyError:
@@ -6934,7 +6939,7 @@ def _series_round(s, decimals):
69346939
elif is_integer(decimals):
69356940
# Dispatch to Series.round
69366941
new_cols = [_series_round(v, decimals)
6937-
for _, v in self.iteritems()]
6942+
for _, v in self.items()]
69386943
else:
69396944
raise TypeError("decimals must be an integer, a dict-like or a "
69406945
"Series")

pandas/core/generic.py

Lines changed: 19 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -437,7 +437,7 @@ def _get_space_character_free_column_resolvers(self):
437437
from pandas.core.computation.common import _remove_spaces_column_name
438438

439439
return {_remove_spaces_column_name(k): v for k, v
440-
in self.iteritems()}
440+
in self.items()}
441441

442442
@property
443443
def _info_axis(self):
@@ -1838,15 +1838,27 @@ def keys(self):
18381838
"""
18391839
return self._info_axis
18401840

1841-
def iteritems(self):
1842-
"""
1843-
Iterate over (label, values) on info axis
1841+
def items(self):
1842+
"""Iterate over (label, values) on info axis
18441843
1845-
This is index for Series, columns for DataFrame and so on.
1844+
This is index for Series and columns for DataFrame.
18461845
"""
18471846
for h in self._info_axis:
18481847
yield h, self[h]
18491848

1849+
_shared_docs['iteritems'] = ("""Iterate over (label, values) on info axis
1850+
1851+
.. deprecated :: 0.25.0
1852+
Use :attr:`%(klass)s.items` instead.
1853+
""")
1854+
1855+
@Appender(_shared_docs["iteritems"] % _shared_doc_kwargs)
1856+
def iteritems(self):
1857+
warnings.warn("'iteritems' is deprecated and will be removed in a "
1858+
"future version. Please use `items` instead.",
1859+
FutureWarning, stacklevel=2)
1860+
return self.items()
1861+
18501862
def __len__(self):
18511863
"""Returns length of info axis"""
18521864
return len(self._info_axis)
@@ -5581,7 +5593,7 @@ def astype(self, dtype, copy=True, errors='raise', **kwargs):
55815593
raise KeyError('Only a column name can be used for the '
55825594
'key in a dtype mappings argument.')
55835595
results = []
5584-
for col_name, col in self.iteritems():
5596+
for col_name, col in self.items():
55855597
if col_name in dtype:
55865598
results.append(col.astype(dtype=dtype[col_name], copy=copy,
55875599
errors=errors, **kwargs))
@@ -9697,7 +9709,7 @@ def describe_1d(data):
96979709
else:
96989710
data = self.select_dtypes(include=include, exclude=exclude)
96999711

9700-
ldesc = [describe_1d(s) for _, s in data.iteritems()]
9712+
ldesc = [describe_1d(s) for _, s in data.items()]
97019713
# set a convenient order for rows
97029714
names = []
97039715
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
@@ -566,7 +566,7 @@ def from_frame(cls, df, sortorder=None, names=None):
566566
if not isinstance(df, ABCDataFrame):
567567
raise TypeError("Input must be a DataFrame")
568568

569-
column_names, columns = zip(*df.iteritems())
569+
column_names, columns = zip(*df.items())
570570
names = column_names if names is None else names
571571
return cls.from_arrays(columns, sortorder=sortorder, names=names)
572572

pandas/core/panel.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -451,7 +451,7 @@ def to_excel(self, path, na_rep='', engine=None, **kwargs):
451451
writer = path
452452
kwargs['na_rep'] = na_rep
453453

454-
for item, df in self.iteritems():
454+
for item, df in self.items():
455455
name = str(item)
456456
df.to_excel(writer, name, **kwargs)
457457
writer.save()

pandas/core/reshape/pivot.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -223,7 +223,7 @@ def _compute_grand_margin(data, values, aggfunc,
223223

224224
if values:
225225
grand_margin = {}
226-
for k, v in data[values].iteritems():
226+
for k, v in data[values].items():
227227
try:
228228
if isinstance(aggfunc, str):
229229
grand_margin[k] = getattr(v, aggfunc)()

0 commit comments

Comments
 (0)