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: Вызовет
ValueErroriffreqтакже предоставлен.- суффикс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