pandas.DataFrame.shift#

DataFrame.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 является итерируемым, это добавляется после имени столбца и перед значением сдвига для каждого сдвинутого имени столбца.

Возвращает:
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