Метод to_period
Метод to_period применяется к Series
с типом данных datetime64 или datetime
и преобразует каждую дату в объект Period с заданной
частотой. Первым параметром передаётся строка с частотой,
например, 'D' для дней, 'M' для месяцев, 'Y' для годов.
Если параметр не указан, частота берётся из индекса
или данных.
Синтаксис
ser.dt.to_period(freq)
Пример
Создадим серию с датами и преобразуем её в месячные периоды:
import pandas as pd
ser = pd.Series(pd.date_range('2026-01-15', periods=5, freq='M'))
res = ser.dt.to_period('M')
print(res)
Результат выполнения кода:
0 2026-01
1 2026-02
2 2026-03
3 2026-04
4 2026-05
dtype: period[M]
Пример
Преобразуем даты в дневные периоды:
import pandas as pd
ser = pd.Series(pd.date_range('2026-01-01', periods=3, freq='D'))
res = ser.dt.to_period('D')
print(res)
Результат выполнения кода:
0 2026-01-01
1 2026-01-02
2 2026-01-03
dtype: period[D]
Пример
Преобразуем даты в квартальные периоды:
import pandas as pd
ser = pd.Series(pd.date_range('2026-01-15', periods=6, freq='M'))
res = ser.dt.to_period('Q')
print(res)
Результат выполнения кода:
0 2026Q1
1 2026Q1
2 2026Q1
3 2026Q2
4 2026Q2
5 2026Q2
dtype: period[Q-DEC]
Пример
Если не передавать частоту, она будет определена автоматически:
import pandas as pd
ser = pd.Series(pd.date_range('2026-01-01', periods=4, freq='h'))
res = ser.dt.to_period()
print(res)
Результат выполнения кода:
0 2026-01-01 00:00
1 2026-01-01 01:00
2 2026-01-01 02:00
3 2026-01-01 03:00
dtype: period[h]
Пример
Метод to_period можно использовать для группировки данных по периодам:
import pandas as pd
df = pd.DataFrame({
'date': pd.date_range('2026-01-01', periods=6, freq='M'),
'a': [1, 2, 3, 4, 5, 6]
})
df['period'] = df['date'].dt.to_period('Q')
res = df.groupby('period')['a'].sum()
print(res)
Результат выполнения кода:
period
2026Q1 6
2026Q2 15
Freq: Q-DEC, Name: a, dtype: int64