pandas.DataFrame.shift
- DataFrame.shift(periods=1, freq=None, axis=0, fill_value=_NoDefault.no_default, suffix=None)[source]
-
Сдвиг индекса на заданное количество периодов с необязательной временной freq.
Когда freq не передан, индекс сдвигается без перераспределения данных. Если freq передан (в этом случае индекс должен быть датой или датой и временем, в противном случае будет возбуждено исключение NotImplementedError), индекс будет увеличен с использованием периодов и freq. freq может быть определен, когда указано как «infer», до тех пор, пока в индексе установлено либо свойство freq, либо свойство inferred_freq.
- Параметры:
-
- periods:int или Последовательность
-
Количество периодов для сдвига. Может быть положительным или отрицательным. Если итерируемый список целых чисел, данные будут сдвигаться один раз на каждое целое число. Это эквивалентно сдвигу на одно значение за раз и конкатенации всех полученных фреймов. Результирующие столбцы будут иметь суффикс, добавленный к их именам столбцов. Для нескольких периодов ось не может быть равна 1.
- freq:DateOffset, tseries.offsets, timedelta или строка, необязательно
-
Смещение, используемое из модуля tseries или временной правила (например, «EOM»). Если freq указано, значения индекса сдвигаются, но данные не перераспределяются. То есть используйте freq, если вы хотите расширить индекс при сдвиге и сохранить исходные данные. Если freq задано как «infer», оно будет определено из свойств freq или inferred_freq индекса. Если ни одно из этих свойств не существует, будет возбуждено исключение ValueError.
- axis:{0 или ‘index’, 1 или ‘columns’, None}, по умолчанию None
-
Направление сдвига. Для Series этот параметр не используется и по умолчанию равен 0.
- fill_value:объект, необязательно
-
Скалярное значение, используемое для новых отсутствующих значений. Значение по умолчанию зависит от типа self. Для числовых данных используется
np.nan. Для данных datetime, timedelta или period и т. д. используетсяNaT. Для расширенных типов данных используетсяself.dtype.na_value. - suffix:строка, необязательно
-
Если строка, а periods — итерируемый список, это добавляется к имени столбца после имени столбца и перед значением сдвига для каждого имени сдвинутого столбца.
- Возвращает:
-
- DataFrame
-
Копия входного объекта, сдвинутого.
См. также
Index.shift-
Сдвиг значений индекса.
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
© 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.DataFrame.shift.html