pandas.Series.shift#
-
Series.shift(periods=1, freq=None, axis=0, fill_value=
, suffix=None)[источник]# Сдвинуть индекс на желаемое количество периодов с необязательным временем freq.
Когда freq не передается, сдвинуть индекс без перевыравнивания данных. Если freq передается (в этом случае индекс должен быть датой или датой-временем, иначе будет вызвано NotImplementedError), индекс будет увеличен с использованием периодов и freq. freq может быть выведен при указании как "infer", если в индексе установлен атрибут freq или inferred_freq.
- Параметры:
- periodsint или Sequence
Количество периодов для сдвига. Может быть положительным или отрицательным. Если итерируемый объект целых чисел, данные будут сдвинуты один раз для каждого целого числа. Это эквивалентно сдвигу по одному значению за раз и объединению всех результирующих фреймов. Результирующие столбцы будут иметь суффикс сдвига в своих именах. Для нескольких периодов ось не должна быть 1.
- freqDateOffset, tseries.offsets, timedelta или str, опционально
Смещение для использования из модуля tseries или временное правило (например, 'EOM'). Если freq указан, то значения индекса сдвигаются, но данные не перевыравниваются. То есть используйте freq если вы хотите расширить индекс при сдвиге и сохранить исходные данные. Если freq указан как "infer", тогда он будет выведен из атрибутов freq или inferred_freq индекса. Если ни один из этих атрибутов не существует, выбрасывается ValueError.
- ось{0 или 'index', 1 или 'columns', None}, по умолчанию None
Направление сдвига. Для Series этот параметр не используется и по умолчанию равен 0.
- fill_valueобъект, опционально
Скалярное значение для использования вновь введённых пропущенных значений. Значение по умолчанию зависит от типа данных self. Для числовых данных,
np.nanиспользуется. Для данных datetime, timedelta, period и т.д.NaTиспользуется. Для типов данных расширений,self.dtype.na_valueиспользуется.- суффиксstr, optional
Если str и periods является итерируемым, это добавляется после имени столбца и перед значением сдвига для каждого сдвинутого имени столбца.
- Возвращает:
- Series/DataFrame
Копия входного объекта, сдвинутая.
Смотрите также
Index.shiftСдвинуть значения Index.
DatetimeIndex.shiftСдвиг значений DatetimeIndex.
PeriodIndex.shiftСдвинуть значения PeriodIndex.
Примеры
>>> df = pd.DataFrame({"Col1": [10, 20, 15, 30, 45], ... "Col2": [13, 23, 18, 33, 48], ... "Col3": [17, 27, 22, 37, 52]}, ... index=pd.date_range("2020-01-01", "2020-01-05")) >>> df Col1 Col2 Col3 2020-01-01 10 13 17 2020-01-02 20 23 27 2020-01-03 15 18 22 2020-01-04 30 33 37 2020-01-05 45 48 52
>>> df.shift(periods=3) Col1 Col2 Col3 2020-01-01 NaN NaN NaN 2020-01-02 NaN NaN NaN 2020-01-03 NaN NaN NaN 2020-01-04 10.0 13.0 17.0 2020-01-05 20.0 23.0 27.0
>>> df.shift(periods=1, axis="columns") Col1 Col2 Col3 2020-01-01 NaN 10 13 2020-01-02 NaN 20 23 2020-01-03 NaN 15 18 2020-01-04 NaN 30 33 2020-01-05 NaN 45 48
>>> df.shift(periods=3, fill_value=0) Col1 Col2 Col3 2020-01-01 0 0 0 2020-01-02 0 0 0 2020-01-03 0 0 0 2020-01-04 10 13 17 2020-01-05 20 23 27
>>> df.shift(periods=3, freq="D") Col1 Col2 Col3 2020-01-04 10 13 17 2020-01-05 20 23 27 2020-01-06 15 18 22 2020-01-07 30 33 37 2020-01-08 45 48 52
>>> df.shift(periods=3, freq="infer") Col1 Col2 Col3 2020-01-04 10 13 17 2020-01-05 20 23 27 2020-01-06 15 18 22 2020-01-07 30 33 37 2020-01-08 45 48 52
>>> df['Col1'].shift(periods=[0, 1, 2]) Col1_0 Col1_1 Col1_2 2020-01-01 10 NaN NaN 2020-01-02 20 10.0 NaN 2020-01-03 15 20.0 10.0 2020-01-04 30 15.0 20.0 2020-01-05 45 30.0 15.0