Skip to content

Commit fbb5c5e

Browse files
committed
BUG: box Timestamps in Series/DataFrame.iget_value. close #2148
1 parent 8142167 commit fbb5c5e

File tree

4 files changed

+17
-7
lines changed

4 files changed

+17
-7
lines changed

RELEASE.rst

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -56,6 +56,7 @@ pandas 0.9.1
5656
- Alias Timestamp.astimezone to tz_convert, so will yield Timestamp (#2060)
5757
- Fix timedelta64 formatting from Series (#2165, #2146)
5858
- Handle None values gracefully in dict passed to Panel constructor (#2075)
59+
- Box datetime64 values as Timestamp objects in Series/DataFrame.iget (#2148)
5960
6061
pandas 0.9.0
6162
============

pandas/core/series.py

Lines changed: 12 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -734,14 +734,19 @@ def iget_value(self, i):
734734
-------
735735
value : scalar (int) or Series (slice, sequence)
736736
"""
737-
if isinstance(i, slice):
738-
return self[i]
739-
else:
740-
label = self.index[i]
741-
if isinstance(label, Index):
742-
return self.reindex(label)
737+
try:
738+
return lib.get_value_at(self, i)
739+
except IndexError:
740+
raise
741+
except:
742+
if isinstance(i, slice):
743+
return self[i]
743744
else:
744-
return lib.get_value_at(self, i)
745+
label = self.index[i]
746+
if isinstance(label, Index):
747+
return self.reindex(label)
748+
else:
749+
return lib.get_value_at(self, i)
745750

746751
iget = iget_value
747752
irow = iget_value

pandas/src/engines.pyx

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,8 @@ cdef inline is_definitely_invalid_key(object val):
3939
or PyList_Check(val))
4040

4141
def get_value_at(ndarray arr, object loc):
42+
if arr.descr.type_num == NPY_DATETIME:
43+
return Timestamp(util.get_value_at(arr, loc))
4244
return util.get_value_at(arr, loc)
4345

4446
def set_value_at(ndarray arr, object loc, object val):

pandas/tseries/tests/test_timeseries.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -216,6 +216,8 @@ def test_series_box_timestamp(self):
216216
s = Series(rng, index=rng)
217217
self.assert_(isinstance(s[5], Timestamp))
218218

219+
self.assert_(isinstance(s.iget_value(5), Timestamp))
220+
219221
def test_timestamp_to_datetime(self):
220222
_skip_if_no_pytz()
221223
rng = date_range('20090415', '20090519',

0 commit comments

Comments
 (0)