Esempio n. 1
0
    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)
Esempio n. 2
0
    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)
Esempio n. 3
0
    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)
Esempio n. 4
0
 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