Сообщить об ошибке.

Метод to_period() объектов DatetimeIndex/DataFrame/Series в pandas

Преобразование индекса DataFrame/Series в PeriodIndex

Синтаксис:

df = DataFrame.to_period(freq=None, axis=0, copy=None)

idx = DatetimeIndex.to_period(freq=None)

col = Timestamp.to_period(freq=None) 

s = Series.to_period(freq=None)

s = Series.dt.to_period(freq=None)

Параметры:

  • freq=None - частота периода PeriodIndex.
  • axis=0 - ось для преобразования (по умолчанию - индекс).
  • copy=None - если False, то базовые входные данные не копируются.

    Аргумент copy изменит поведение в pandas 3.0. Копирование при записи будет включено по умолчанию, а это означает, что все методы с аргументом copy будут использовать механизм отложенного копирования и игнорировать аргумент copy. Ключевой аргумент copy будет удален в будущей версии pandas. Можно уже сейчас получить будущее поведение и улучшения, включив копирование при записи pd.options.mode.copy_on_write = True

Возвращаемое значение:

Описание:

Метод DataFrame.to_period() модуля pandas преобразует DataFrame с DatetimeIndex в значения PeriodIndex. По умолчанию преобразовывается индекс.

Метод DatetimeIndex.to_period() преобразует DatetimeIndex в значения PeriodIndex.

Метод Timestamp.to_period() преобразует значения Timestamp в значения PeriodIndex.

Метод Series.to_period() преобразует Series с DatetimeIndex в значения PeriodIndex.

Описание метода Series.dt.to_period() смотрите в материале "Доступ к методам datetime объектов Series/index в pandas"

Примеры DatetimeIndex.to_period()

>>> import pandas as pd

idx = pd.to_datetime(
    [
        "2021-03-31 00:00:00",
        "2022-05-31 00:00:00",
        "2023-08-31 00:00:00",
    ]
)

>>> idx
# DatetimeIndex(['2021-03-31', '2022-05-31', '2023-08-31'], dtype='datetime64[ns]', freq=None)

>>> idx.to_period("M")
# PeriodIndex(['2021-03', '2022-05', '2023-08'], dtype='period[M]')

Годовая периодичность

>>> idx.to_period("Y")
# PeriodIndex(['2021', '2022', '2023'], dtype='period[Y-DEC]')

Примеры Timestamp.to_period()

>>> ts = pd.Timestamp('2020-03-14T15:32:52.192548651')
>>> # Year end frequency
>>> ts.to_period(freq='Y')
# Period('2020', 'Y-DEC')

# Периодичность на конец месяца
>>> ts.to_period(freq='M')
Period('2020-03', 'M')

# Еженедельная частота
>>> ts.to_period(freq='W')
Period('2020-03-09/2020-03-15', 'W-SUN')

# Частота окончания квартала
>>> ts.to_period(freq='Q')
Period('2020Q1', 'Q-DEC')

Примеры Series.to_period()

>>> idx = pd.DatetimeIndex(['2023', '2024', '2025'])
>>> s = pd.Series([1, 2, 3], index=idx)
>>> s
# 2023-01-01    1
# 2024-01-01    2
# 2025-01-01    3
# dtype: int64

>>> s = s.to_period()
>>> s
# 2023    1
# 2024    2
# 2025    3
# Freq: Y-DEC, dtype: int64

# смотрим индекс
>>> s.index
# PeriodIndex(['2023', '2024', '2025'], dtype='period[Y-DEC]')