diff --git a/doc/source/whatsnew/v0.17.1.txt b/doc/source/whatsnew/v0.17.1.txt index c25e0300a1050..ba76bdd4e5618 100755 --- a/doc/source/whatsnew/v0.17.1.txt +++ b/doc/source/whatsnew/v0.17.1.txt @@ -121,6 +121,7 @@ API changes result in ``NaT`` and not ``nan`` (:issue:`11245`). - Indexing with a null key will raise a ``TypeError``, instead of a ``ValueError`` (:issue:`11356`) - ``Series.ptp`` will now ignore missing values by default (:issue:`11163`) +- ``Series`` and ``DataFrame`` have gained the .items() method to mirror .iteritems() and for compat with PY3 (:issue:`13918`) .. _whatsnew_0171.deprecations: diff --git a/pandas/core/frame.py b/pandas/core/frame.py index 4416213817ab4..19464d9d6a042 100644 --- a/pandas/core/frame.py +++ b/pandas/core/frame.py @@ -761,8 +761,7 @@ def itertuples(self, index=True, name="Pandas"): # fallback to regular tuples return zip(*arrays) - if compat.PY3: # pragma: no cover - items = iteritems + items = iteritems def __len__(self): """Returns length of info axis, but here we use the index """ diff --git a/pandas/core/series.py b/pandas/core/series.py index e388683012a66..08fb893392476 100644 --- a/pandas/core/series.py +++ b/pandas/core/series.py @@ -1096,8 +1096,7 @@ def iteritems(self): """ return zip(iter(self.index), iter(self)) - if compat.PY3: # pragma: no cover - items = iteritems + items = iteritems # ---------------------------------------------------------------------- # Misc public methods diff --git a/pandas/tests/frame/test_misc_api.py b/pandas/tests/frame/test_misc_api.py index 03b3c0a5e65d0..234bb9bbe4fa0 100644 --- a/pandas/tests/frame/test_misc_api.py +++ b/pandas/tests/frame/test_misc_api.py @@ -241,6 +241,12 @@ def test_iteritems(self): for k, v in compat.iteritems(df): self.assertEqual(type(v), Series) + def test_items(self): + # items is the same as iteritems (#13918) + df = DataFrame([[1, 2, 3], [4, 5, 6]], columns=['a', 'a', 'b']) + for k, v in df.items(): + self.assertEqual(type(v), Series) + def test_iter(self): self.assertTrue(tm.equalContents(list(self.frame), self.frame.columns)) diff --git a/pandas/tests/series/test_misc_api.py b/pandas/tests/series/test_misc_api.py index d74966738909d..a6d66bd8598a6 100644 --- a/pandas/tests/series/test_misc_api.py +++ b/pandas/tests/series/test_misc_api.py @@ -218,6 +218,16 @@ def test_iteritems(self): # assert is lazy (genrators don't define reverse, lists do) self.assertFalse(hasattr(self.series.iteritems(), 'reverse')) + def test_items(self): + # items is the same as iteritems (#13918) + for idx, val in self.series.items(): + self.assertEqual(val, self.series[idx]) + + for idx, val in self.ts.items(): + self.assertEqual(val, self.ts[idx]) + + self.assertFalse(hasattr(self.series.items(), 'reverse')) + def test_raise_on_info(self): s = Series(np.random.randn(10)) with tm.assertRaises(AttributeError):