pandas.core.groupby.SeriesGroupBy.shift#

SeriesGroupBy.shift(periods=1, freq=None, axis=, fill_value=, suffix=None)[источник]#

Сдвинуть каждую группу на periods наблюдений.

Если передан freq, индекс будет увеличен с использованием периодов и частоты.

Параметры:
periodsint | Sequence[int], по умолчанию 1

Количество периодов для сдвига. Если указан список значений, сдвигает каждую группу на каждый период.

freqstr, optional

Строка частоты.

осьось для сдвига, по умолчанию 0

Направление сдвига.

Устарело с версии 2.1.0: Для axis=1, работайте с базовым объектом вместо этого. В противном случае ключевое слово axis не требуется.

fill_valueнеобязательный

Скалярное значение для использования в качестве новых отсутствующих значений.

Изменено в версии 2.1.0: Вызовет ValueError if freq также предоставлен.

суффиксstr, optional

Строка для добавления к каждому сдвинутому столбцу, если есть несколько периодов. Игнорируется в противном случае.

Возвращает:
Series или DataFrame

Объект сдвинут внутри каждой группы.

Смотрите также

Index.shift

Сдвинуть значения Index.

Примеры

Для SeriesGroupBy:

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

Для 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"])
>>> df
           a  b  c
    tuna   1  2  3
  salmon   1  5  6
 catfish   2  5  8
goldfish   2  6  9
>>> df.groupby("a").shift(1)
              b    c
    tuna    NaN  NaN
  salmon    2.0  3.0
 catfish    NaN  NaN
goldfish    5.0  8.0