snowflake.snowpark.modin.plugin.extensions.groupby_overrides.SeriesGroupBy.shift¶

SeriesGroupBy.shift(periods: Union[int, Sequence[int]] = 1, freq: int = None, axis: Union[int, Literal['index', 'columns', 'rows']] = 0, fill_value: Any = None, suffix: Optional[str] = None)[source]¶

Shift each group by periods observations.

If freq is passed, the index will be increased using the periods and the freq.

Parameters:
  • periods (int | Sequence[int], default 1) –

    Number of periods to shift. Can be positive or negative. If an iterable of ints, the data will be shifted once by each int. This is equivalent to shifting by one value at a time and concatenating all resulting frames. The resulting columns will have the shift suffixed to their column names. For multiple periods, axis must not be 1.

    Snowpark pandas does not currently support sequences of int for periods.

  • freq (DateOffset, tseries.offsets, timedelta, or str, optional) –

    Offset to use from the tseries module or time rule (e.g. ‘EOM’).

    Snowpark pandas does not yet support this parameter.

  • axis (axis to shift, default 0) – Shift direction. Snowpark pandas does not yet support axis=1.

  • fill_value (optional) – The scalar value to use for newly introduced missing values.

  • suffix (str, optional) –

    If str is specified and periods is an iterable, this is added after the column name and before the shift value for each shifted column name.

    Snowpark pandas does not yet support this parameter.

Returns:

Object shifted within each group.

Return type:

Series or DataFrame

Examples

For SeriesGroupBy:

>>> lst = ['a', 'a', 'b', 'b']
>>> ser = pd.Series([1, 2, 3, 4], index=lst)
Copy
>>> ser
a    1
a    2
b    3
b    4
dtype: int64
Copy
>>> ser.groupby(level=0).shift(1)
a    NaN
a    1.0
b    NaN
b    3.0
dtype: float64
Copy

For DataFrameGroupBy:

>>> data = [[1, 2, 3], [1, 5, 6], [2, 5, 8], [2, 6, 9]]
>>> df = pd.DataFrame(data, columns=["a", "b", "c"],
...                   index=["tuna", "salmon", "catfish", "goldfish"])
Copy
>>> df
          a  b  c
tuna      1  2  3
salmon    1  5  6
catfish   2  5  8
goldfish  2  6  9
Copy
>>> df.groupby("a").shift(1)
            b    c
tuna      NaN  NaN
salmon    2.0  3.0
catfish   NaN  NaN
goldfish  5.0  8.0
Copy