def slice_shift(self, periods=1, axis=0):
    '\n        Equivalent to `shift` without copying data. The shifted data will\n        not include the dropped periods and the shifted axis will be smaller\n        than the original.\n\n        Parameters\n        ----------\n        periods : int\n            Number of periods to move, can be positive or negative\n\n        Returns\n        -------\n        shifted : same type as caller\n\n        Notes\n        -----\n        While the `slice_shift` is faster than `shift`, you may pay for it\n        later during alignment.\n        '
    if (periods == 0):
        return self
    if (periods > 0):
        vslicer = slice(None, (- periods))
        islicer = slice(periods, None)
    else:
        vslicer = slice((- periods), None)
        islicer = slice(None, periods)
    new_obj = self._slice(vslicer, axis=axis)
    shifted_axis = self._get_axis(axis)[islicer]
    new_obj.set_axis(shifted_axis, axis=axis, inplace=True)
    return new_obj.__finalize__(self)
Equivalent to `shift` without copying data. The shifted data will
not include the dropped periods and the shifted axis will be smaller
than the original.

Parameters
----------
periods : int
    Number of periods to move, can be positive or negative

Returns
-------
shifted : same type as caller

Notes
-----
While the `slice_shift` is faster than `shift`, you may pay for it
later during alignment.
def slice_shift(self, periods=1, axis=0):
    '\n        Equivalent to `shift` without copying data. The shifted data will\n        not include the dropped periods and the shifted axis will be smaller\n        than the original.\n\n        Parameters\n        ----------\n        periods : int\n            Number of periods to move, can be positive or negative\n\n        Returns\n        -------\n        shifted : same type as caller\n\n        Notes\n        -----\n        While the `slice_shift` is faster than `shift`, you may pay for it\n        later during alignment.\n        '
    if (periods == 0):
        return self
    if (periods > 0):
        vslicer = slice(None, (- periods))
        islicer = slice(periods, None)
    else:
        vslicer = slice((- periods), None)
        islicer = slice(None, periods)
    new_obj = self._slice(vslicer, axis=axis)
    shifted_axis = self._get_axis(axis)[islicer]
    new_obj.set_axis(shifted_axis, axis=axis, inplace=True)
    return new_obj.__finalize__(self)