Skip to content

Commit d6d93ba

Browse files
committed
ENH: added .items to Series and DataFrame for both PY2 and PY3
Closes: #13918
1 parent e5ee5d2 commit d6d93ba

File tree

5 files changed

+19
-4
lines changed

5 files changed

+19
-4
lines changed

doc/source/whatsnew/v0.17.1.txt

+1
Original file line numberDiff line numberDiff line change
@@ -121,6 +121,7 @@ API changes
121121
result in ``NaT`` and not ``nan`` (:issue:`11245`).
122122
- Indexing with a null key will raise a ``TypeError``, instead of a ``ValueError`` (:issue:`11356`)
123123
- ``Series.ptp`` will now ignore missing values by default (:issue:`11163`)
124+
- ``Series`` and ``DataFrame`` have gained the .items() method to mirror .iteritems() and for compat with PY3 (:issue:`13918`)
124125

125126
.. _whatsnew_0171.deprecations:
126127

pandas/core/frame.py

+1-2
Original file line numberDiff line numberDiff line change
@@ -761,8 +761,7 @@ def itertuples(self, index=True, name="Pandas"):
761761
# fallback to regular tuples
762762
return zip(*arrays)
763763

764-
if compat.PY3: # pragma: no cover
765-
items = iteritems
764+
items = iteritems
766765

767766
def __len__(self):
768767
"""Returns length of info axis, but here we use the index """

pandas/core/series.py

+1-2
Original file line numberDiff line numberDiff line change
@@ -1096,8 +1096,7 @@ def iteritems(self):
10961096
"""
10971097
return zip(iter(self.index), iter(self))
10981098

1099-
if compat.PY3: # pragma: no cover
1100-
items = iteritems
1099+
items = iteritems
11011100

11021101
# ----------------------------------------------------------------------
11031102
# Misc public methods

pandas/tests/frame/test_misc_api.py

+6
Original file line numberDiff line numberDiff line change
@@ -241,6 +241,12 @@ def test_iteritems(self):
241241
for k, v in compat.iteritems(df):
242242
self.assertEqual(type(v), Series)
243243

244+
def test_items(self):
245+
# items is the same as iteritems (#13918)
246+
df = DataFrame([[1, 2, 3], [4, 5, 6]], columns=['a', 'a', 'b'])
247+
for k, v in df.items():
248+
self.assertEqual(type(v), Series)
249+
244250
def test_iter(self):
245251
self.assertTrue(tm.equalContents(list(self.frame), self.frame.columns))
246252

pandas/tests/series/test_misc_api.py

+10
Original file line numberDiff line numberDiff line change
@@ -218,6 +218,16 @@ def test_iteritems(self):
218218
# assert is lazy (genrators don't define reverse, lists do)
219219
self.assertFalse(hasattr(self.series.iteritems(), 'reverse'))
220220

221+
def test_items(self):
222+
# items is the same as iteritems (#13918)
223+
for idx, val in self.series.items():
224+
self.assertEqual(val, self.series[idx])
225+
226+
for idx, val in self.ts.items():
227+
self.assertEqual(val, self.ts[idx])
228+
229+
self.assertFalse(hasattr(self.series.items(), 'reverse'))
230+
221231
def test_raise_on_info(self):
222232
s = Series(np.random.randn(10))
223233
with tm.assertRaises(AttributeError):

0 commit comments

Comments
 (0)