def get_value(self, series, key): """ Fast lookup of value from 1-dimensional ndarray. Only use this if you know what you're doing """ try: return super(PeriodIndex, self).get_value(series, key) except KeyError: try: asdt, parsed, reso = datetools.parse_time_string(key) grp = _freq_mod._infer_period_group(reso) freqn = _freq_mod._period_group(self.freq) # if our data is higher resolution than requested key, slice if grp < freqn: iv = Period(asdt, freq=(grp, 1)) ord1 = iv.asfreq(self.freq, how="S").ordinal ord2 = iv.asfreq(self.freq, how="E").ordinal pos = np.searchsorted(self.values, [ord1, ord2]) key = slice(pos[0], pos[1] + 1) return series[key] else: key = to_period(asdt, freq=self.freq).ordinal return self._engine.get_value(series, key) except TypeError: pass except KeyError: pass except IndexError: ival = Period(key, freq=self.freq) raise IndexError("%s is out of bounds" % ival) key = to_period(key, self.freq).ordinal return self._engine.get_value(series, key)
def get_loc(self, key): """ Get integer location for requested label Returns ------- loc : int """ try: return self._engine.get_loc(key) except KeyError: try: asdt, parsed, reso = datetools.parse_time_string(key) key = asdt except TypeError: pass except KeyError: pass key = to_period(key, self.freq).ordinal return self._engine.get_loc(key)
def get_value(self, series, key): """ Fast lookup of value from 1-dimensional ndarray. Only use this if you know what you're doing """ try: return Index.get_value(self, series, key) except KeyError: try: asdt, parsed, reso = datetools.parse_time_string(key) key = asdt loc = self._partial_date_slice(reso, parsed) return series[loc] except (TypeError, ValueError, KeyError): pass stamp = Timestamp(key) try: return self._engine.get_value(series, stamp) except KeyError: raise KeyError(stamp)
def _get_string_slice(self, key): asdt, parsed, reso = datetools.parse_time_string(key) key = asdt loc = self._partial_date_slice(reso, parsed) return loc