@@ -43,9 +43,9 @@ cdef inline bint is_definitely_invalid_key(object val):
4343 or PyList_Check(val) or hasattr (val, ' _data' ))
4444
4545
46- def get_value_at (ndarray arr , object loc ):
46+ cpdef get_value_at(ndarray arr, object loc, object tz = None ):
4747 if arr.descr.type_num == NPY_DATETIME:
48- return Timestamp(util.get_value_at(arr, loc))
48+ return Timestamp(util.get_value_at(arr, loc), tz = tz )
4949 elif arr.descr.type_num == NPY_TIMEDELTA:
5050 return Timedelta(util.get_value_at(arr, loc))
5151 return util.get_value_at(arr, loc)
@@ -68,12 +68,7 @@ cpdef object get_value_box(ndarray arr, object loc):
6868 if i >= sz or sz == 0 or i < 0 :
6969 raise IndexError (' index out of bounds' )
7070
71- if arr.descr.type_num == NPY_DATETIME:
72- return Timestamp(util.get_value_1d(arr, i))
73- elif arr.descr.type_num == NPY_TIMEDELTA:
74- return Timedelta(util.get_value_1d(arr, i))
75- else :
76- return util.get_value_1d(arr, i)
71+ return get_value_at(arr, i, tz = None )
7772
7873
7974# Don't populate hash tables in monotonic indexes larger than this
@@ -114,11 +109,7 @@ cdef class IndexEngine:
114109 if PySlice_Check(loc) or cnp.PyArray_Check(loc):
115110 return arr[loc]
116111 else :
117- if arr.descr.type_num == NPY_DATETIME:
118- return Timestamp(util.get_value_at(arr, loc), tz = tz)
119- elif arr.descr.type_num == NPY_TIMEDELTA:
120- return Timedelta(util.get_value_at(arr, loc))
121- return util.get_value_at(arr, loc)
112+ return get_value_at(arr, loc, tz = tz)
122113
123114 cpdef set_value(self , ndarray arr, object key, object value):
124115 """
0 commit comments