pandas.core.groupby.DataFrameGroupBy.shift
- DataFrameGroupBy.shift(periods=1, freq=None, axis=_NoDefault.no_default, fill_value=_NoDefault.no_default, suffix=None)[source]
-
Сдвиг каждого группированного объекта на заданное количество наблюдений.
Если передан freq, индекс увеличится с использованием заданных периодов и частоты.
- Параметры:
-
- periods:int | Список[int], по умолчанию 1
-
Количество периодов сдвига. Если список, то каждый группированный объект будет сдвинут на указанное значение.
- freq:строка, необязательно
-
Строка частоты.
- axis:ось сдвига, по умолчанию 0
-
Направление сдвига.
Устарело начиная с версии 2.1.0: Для axis=1, работаем с основным объектом вместо него. В противном случае параметр axis не нужен.
- fill_value:необязательно
-
Значение скаляра, используемого для заполнения новых пропущенных значений.
Изменено в версии 2.1.0: Будет выброшено исключение
ValueError, еслиfreqслишком много. - suffix:строка, необязательно
-
Строка, добавляемая к каждому сдвинутому столбцу, если периодов несколько. В противном случае игнорируется.
- Возвращаемое значение:
-
- Ряд или DataFrame
-
Объект, сдвинутый внутри каждой группы.
См. также
Index.shift-
Сдвиг значений индекса.
Примеры
Для 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
© 2008–2022, AQR Capital Management, LLC, Lambda Foundry, Inc. and PyData Development Team
Licensed under the 3-clause BSD License.
https://pandas.pydata.org/pandas-docs/version/2.2.2/reference/api/pandas.core.groupby.DataFrameGroupBy.shift.html